matlab图像处理Lena大作业
five的圖象處理大作業
憨憨選了個圖象處理課,結果老師上課瘋狂吹逼,具體方法只有很少一點,然后布置了一個大作業,大概就是讀取圖像然后加個高斯白噪聲,然后再想辦法把噪聲濾除,以及做一個銳化。這里直接上一個代碼
I=imread('lena512.bmp'); imfinfo('lena512.bmp'); figure,imshow(I); y = uint8(wgn(512,512,60)); figure,imshow(y); I1=I+y; for i=1:1:512for j=1:1:512if I1(i,j)>256I1(i,j)=256;endend end for i=1:1:512for j=1:1:512if I1(i,j)<0I1(i,j)=0;endend end figure,imshow(I1); k1=filter2(fspecial('average',3),I1)/255; %進行3*3模板平滑濾波 k2=filter2(fspecial('average',5),I1)/255; %進行5*5模板平滑濾波 k3=filter2(fspecial('average',7),I1)/255; %進行7*7模板平滑濾波 k4=filter2(fspecial('average',9),I1)/255; %進行9*9模板平滑濾波 subplot(141),imshow(k1);title('3*3 模板平滑濾波'); subplot(142),imshow(k2);title('5*5 模板平滑濾波'); subplot(143),imshow(k3);title('7*7 模板平滑濾波'); subplot(144),imshow(k4);title('9*9 模板平滑濾波');p1 =fspecial('sobel');%銳化 figure(); add1 =imfilter(I1,p1); out1=add1+I1; imshow(out1); title('sobel銳化結果'); % % figure,imhist(I); % % I2=imnoise(I,'gaussian',0,0.1); % % figure,imshow(I2);第一步
讀取圖像,matlab有自帶的圖像讀取函數imread,讀取出來如果你是512512的黑白圖像就會用個512512的數組來儲存,如果是rgb就是5125123的數組,這下我門就完成了第一步,那個imfinfo是可以看圖像具體數據的函數,imread應該可以讀很多格式的圖像
第二步
這里本來可以直接用imnoise函數加噪聲,但是由于老師要求單獨的高斯噪聲圖像這里使用的是wgn函數,wgn函數具體用法:
wgn(行,列,噪聲功率)
當然也可以用rand(),之后還要乘一個常數再加到原圖像上去,兩者之間有個換算關系:wgn(m,n,p)=sqrt*(10^(p/10))*rand(m,n)
然后得到一個噪聲圖像和加了噪聲的圖像
線性平滑濾波
簡單地通過matlab的函數實現。。。
filter2(fspecial(‘average’,3),I1)/255,這里的3可以替換成其他奇數,一般越大越模糊這里給一組對比圖:
第四步銳化
用fspecial函數選擇sobel算子來做銳化,簡單的一批,關于銳化的原理,說白了提取邊緣分量,怎么提?用一個算子一個一個滑動過去,至于算子怎么設計?下次再開個專題來詳細說說有哪些算子,是怎么設計的,現在就給個成果圖:
總之先寫到這里,有弟弟和我說C++的opencv做這個會很快,我覺得matlab已經夠快了,等我學了C++再出一期openCV做圖像處理的合集。
分割線-------------
一年過去了我還是沒有學會C++。。考研黨是人下人。
總結
以上是生活随笔為你收集整理的matlab图像处理Lena大作业的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: hge引擎配置登录器教程_HGEM2引擎
- 下一篇: matlab人脸追踪,求大神帮助我这个菜