還記得過去寫過徑向模糊,不過當時效果似乎不好。
這次效果還可以,程式中用的演算法是:
1.求當前處理點和影象中心點之間的距離r與角度ang;
2.通過對r的修改得到徑向模糊。
3.通過對ang的修改得到旋轉模糊。
一看程式碼就能全部明白,不仔細解釋了。
原圖如下:
處理後效果:
matlab程式碼如下:
clear all;close all;clc img=imread('lena.jpg'); [h w]=size(img); imshow(img) imgn=zeros(h,w); for y=1:h for x=1:w r=sqrt((y-h/2)^2+(x-w/2)^2); ang=atan2(y-h/2,x-w/2); pix=0; pixNum=0; rot=0; for i=0:0.1:10 rot=rot-0.001; %旋轉系數 %r-i是距離當前畫素的距離為r-i的畫素,在當前畫素和中心畫素同一條直線上 yy=round(abs(r-i)*sin(ang+rot))+h/2; xx=round(abs(r-i)*cos(ang+rot))+w/2; if yy>=1 && yy<=h && xx>=1 && xx<=w pix=pix+double(img(yy,xx)); pixNum=pixNum+1; end end pix=pix/pixNum; imgn(y,x)=pix; end end figure; imshow(imgn,[]);