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


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

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

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM