とらりもんHOME  Index  Search  Changes  Login

pyradar

2015/06/25 Mizuochi, H.

主にSARの画像処理に特化したpythonの拡張モジュールです。 ubuntu14.10で動作確認しています。

インストール

まずPIL(画像処理用の簡易モジュール)を入れる。

sudo pip install PIL --allow-external PIL --allow-unverified PIL

うまくいかない場合は

sudo apt-get install Pillow

その後

sudo pip install pyradar

うまくいかない場合は

git clone https://github.com/PyRadar/pyradar.git
cd pyradar/
sudo python setup.py install

pythonまたはipythonを起動し、import pyradarが通ればインストール完了。

  • 注: python3ではうまくいかないかも。
  • 注: ipythonはデフォルトでpython3を起動する可能性あり。
  • 注: ↑その場合はipython2を使う。インストルは, $ sudo pip install python2

画像にフィルタをかける


# -*- coding: utf-8 -*-

from pyradar.filters.lee import lee_filter
import gdal
import pylab as pl
import numpy as np

gdal.AllRegister()
test=gdal.Open("S13E012_07_sl_HH")
cols=test.RasterXSize
rows=test.RasterYSize
bands=test.RasterCount
proj=test.GetProjection()
geotrans=test.GetGeoTransform()
HH=test.GetRasterBand(1)
datatype=HH.DataType
HH_mat=HH.ReadAsArray()
print "lee start"
HH_lee=lee_filter(HH_mat,win_size=5,cu=0.25)
HH_mat2=20.0*np.log10(HH_lee)-83.0 

driver=gdal.GetDriverByName("GTiff")
outdata=driver.Create("out.tif",cols,rows,bands,gdal.GDT_Float64)
#outdata=driver.Create("out.tif",cols,rows,bands,datatype)

outdata.SetGeoTransform(geotrans)
outdata.SetProjection(proj)
outdata.GetRasterBand(1).WriteArray(HH_mat2)
outdata=None
driver=None
HH_mat=None
test=None

LeeFilter

上記の処理は非常に重いので、LeeFilterだけに特化したcython (pythonをCに変換するやつ) によるモジュールで代替。

git clone https://github.com/josephmeiring/LeeFilter.git
sudo apt-get install cython
sudo apt-get install python-scipy
cd LeeFilter
sudo python setup.py build_ext --inplace

直接コンパイルする場合は

gcc -fPIC -c LeeFilter.c -I/usr/include/python2.7/
ls #.oファイルができていることを確認
gcc -shared -o LeeFilter.so LeeFilter.o

これにより、ipython上で通常のpythonモジュールと同様インポートが可能になる。 LeeFilterディレクトリ内でipythonを起動、

import LeeFilter
HH_mat2=np.double(HH_mat)
HH_lee2=LeeFilter.LeeFilter(HH_mat2,N=5,sig=5) #Nはウインドウサイズ、sigは予測される分散のパラメータ

処理速度が22min→8sに向上。

Last modified:2017/04/25 18:18:42
Keyword(s):
References:[とらりもんHOME]