from PIL import Image from scipy import signal H=array([[-1,0,1],[-2,0,2],[-1,0,1]]) im1=array(Image.open('Material/lena.jpg').convert('L')) im2=signal.fftconvolve(im1,H,"same") gray() imshow(im2) show() # scipy.signal.fftconvolve與scipy.signal.convolve兩個均可實現對自定的卷積核H進行二維卷積計算 # 第三個參數"same"表示相同大小,還有"full"等,具體差別可自行實踐 # 二維的卷積運算還有signal.sepfir2d(),可以傳入三個參數,後兩個參數制定行和列的卷積和(兩個方向上的卷積是可以不同的,分別制定卷積和序列)。
from scipy import ndimage from PIL import Image H=array([[-1,0,1],[-2,0,2],[-1,0,1]]) im1=array(Image.open('Material/lena.jpg').convert('L')) im3=ndimage.affine_transform(im1,H[:2,:2],(H[0,2],H[1,2])) gray() imshow(im3) show() # 通過scipy.ndimage.affine_transform可以實現圖像的仿射變換 # 第一個參數代表處理的圖像即原圖像,第二個參數是旋轉矩陣2by2,第三個參數是平移(縱向,橫向)