matlab練習程式(旋轉、徑向模糊)

Dsp Tian發表於2014-07-19

還記得過去寫過徑向模糊,不過當時效果似乎不好。

這次效果還可以,程式中用的演算法是:

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,[]);

相關文章