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に向上。
Keyword(s):
References:[とらりもんHOME]