http://blog.sciencenet.cn/blog-95484-803140.html
% %圖像灰度變換
% f = imread('E:\2013第一學期課程\媒體計算\實驗一\Img\Fig0303(a)(breast).tif');
% g1 = imadjust(f, [0 1], [1 0]);
% g2 = imadjust(f, [0.5 0.75], [0 1]);
% g3 = imadjust(f,[],[],2);
% subplot(2,2,1), imshow(f), title('原始圖像');
% subplot(2,2,2), imshow(g1), title('負片圖像');
% subplot(2,2,3), imshow(g2), title('亮度擴展圖像');
% subplot(2,2,4), imshow(g3), title('gama=2 圖像');
%
% f1 = imread('E:\2013第一學期課程\媒體計算\實驗一\Img\Fig0308(a)(pollen).tif');
% figure,imshow(f1);
% figure,imhist(f1)
% ylim('auto')
% f1g1 = histeq (f1, 256);
% figure,imshow(f1g1)
% figure,imhist(f1g1)
% ylim('auto')
%圖像空域濾波
close all;
f = imread('E:\2013第一學期課程\媒體計算\實驗一\Img\Fig0318(a)(ckt-board-orig).tif');
subplot(2,2,1), imshow(f), title('原始圖像');
g = imnoise(f,'salt & pepper',0.2);
subplot(2,2,2), imshow(g), title('噪聲圖像');
w = [1/9 1/9 1/9; 1/9 1/9 1/9; 1/9 1/9 1/9]
% w = [0.25 0.25; 0.25 0.25]
% g1 = imfilter(f,w, 'replicate')
% subplot(2,2,3), imshow(g1), title('原始圖像均值濾波');
g2 = imfilter(g,w, 'replicate')
subplot(2,2,3), imshow(g2), title('均值濾波');
%medfilt2
g3 = medfilt2(g);
subplot(2,2,4), imshow(g3), title('中值濾波');
%fspecial
% f = imread('E:\2013第一學期課程\媒體計算\實驗一\Img\Fig0316(a)(moon).tif');
% w1 = fspecial('prewitt')
% g1 = f- imfilter(f,w1, 'replicate')
%
% w2 = fspecial('sobel')
% g2 = f-imfilter(f,w2, 'replicate')
%
% w3 = fspecial('laplacian',0)
% g3 = f-imfilter(f,w3, 'replicate')
%
% subplot(2,2,1), imshow(f), title('原始圖像');
% subplot(2,2,2), imshow(g1), title('prewitt');
% subplot(2,2,3), imshow(g2), title('sobel');
% subplot(2,2,4), imshow(g3), title('laplacian');
%傅里葉變換
% f = imread('E:\2013第一學期課程\媒體計算\實驗一\Img\Fig0315(a)(original_test_pattern).tif');
% F=fft2(f); %對圖像f進行傅里葉變換,得到的圖像大小為P*Q
% s = abs(F);
% Fc=fftshift(F); %將變換原點移到頻率矩形的中心
% S=log(1+abs(Fc)); %對頻譜圖進行對數變換,以便更好顯示頻譜
% g=real(ifft2(F)); %對傅里葉頻譜進行逆變換,顯示效果
%
% subplot(2,2,1), imshow(s,[]), title('傅里葉變換后圖像');
% subplot(2,2,2), imshow(abs(Fc),[]), title('將變換原點移到頻率矩形的中心');
% subplot(2,2,3), imshow(S,[]), title('頻譜圖進行對數變換');
% subplot(2,2,4), imshow(g), title('傅里葉頻譜進行逆變換圖像');
% figure,imshow(f);
%圖像頻域濾波
% f = imread('E:\2013第一學期課程\媒體計算\實驗一\Img\Fig0515(a)(base-with-control-points).tif');
% [m,n] = size(f);
% F = fft2(f);
% sig = 10;
% H = lpfilter('gaussian',m, n, sig);
% G = H.*F;
% g1 = real(ifft2(G));
% %空域高斯濾波
% w = fspecial('gaussian',500,10)
% g2 =imfilter(f,w, 'replicate')
%
% subplot(1,3,1), imshow(f,[]), title('原始圖像');
% subplot(1,3,2), imshow(g1,[]), title('頻域高斯濾波');
% subplot(1,3,3), imshow(g2,[]), title('空域高斯濾波');
conv2、filter2、imfilter的區別
http://www.ilovematlab.cn/thread-293710-1-1.html
今天見到了壇主math以及論壇其他牛人的真容,聽完報告感慨良多,一句話加油吧。
-------------------------------------conv2函數----------------------------------------
1、用法
- C=conv2(A,B,shape); %卷積濾波
A:輸入圖像,B:卷積核
假設輸入圖像A大小為ma x na,卷積核B大小為mb x nb,則
當shape=full 時,返回全部二維卷積結果,即返回C的大小為(ma+mb-1)x(na+nb-1)
shape=same 時,返回與A同樣大小的卷積中心部分
shape=valid 時,不考慮邊界補零,即只要有邊界補出的零參與運算的都舍去,返回C的大小為(ma-mb+1)x(na-nb+1)
2、實現步驟
假設輸入圖像A大小為ma x na,卷積核大小為mb x nb,則MATLAB的 conv2 函數實現流程如下:
a、對輸入圖像補零,第一行之前和最后一行之后都補mb-1行,第一列之前和最后一列之后都補nb-1列(注意:conv2不支持其他的邊界補充選項,函數內部對輸入總是補零)。
b、關於卷積核的中心,旋轉卷積核180度。
c、滑動卷積核,將卷積核的中心位於圖像矩陣的每一個元素。
d、將旋轉后的卷積核乘以對應的矩陣元素再求和。
3、實現過程展示
假設有圖像A=[4 3 1 2;0 1 1 3;5 2 0 0], 卷積核B=[1 2 3;0 -1 2;1 1 0]
a、首先是按照上面的步驟進行補零,如下圖外圈紅色的為補出的零
<ignore_js_op>
