📄 convcorr.m
字号:
%Question No: 4
%Implement a program for image convolution and correlation using a
%rectangular convolution mask of any odd size. The mask should be input as
%an ASCII text file. Test the program using the following convolution
%kernels:
%a) 3 by 3 averaging
%a) 7 by 7 averaging
%a) 11 by 11 averaging
function convcorr(x)
f=imread(x);
f=im2double(f);
[r c]=size(f);
choice=input('1: 3 by 3 mask\n2: 7 by 7 mask\n3: 11 by 11 mask\n Enter your choice :');
switch(choice)
case 1
h1=textread('three.txt');
h2=rot90(rot90(h1));
g=padarray(f,[1 1]);
for i=2:r+1
for j=2:c+1
sm1=0;sm2=0;
m=-1;
for k=1:3
n=-1;
for l=1:3
sm1=sm1+h1(k,l)*g(i+m,j+n);
sm2=sm2+h2(k,l)*g(i+m,j+n);
n=n+1;
end
m=m+1;
end
cr(i-1,j-1)=sm1;
cv(i-1,j-1)=sm2;
end
end
figure,imshow(f),title('Original Image');
figure,imshow(cv),title('Convolved Image');
figure,imshow(cr),title('Correlated Image');
case 2
h1=textread('seven.txt');
h2=rot90(rot90(h1));
g=padarray(f,[3 3]);
for i=4:r+3
for j=4:c+3
sm1=0;sm2=0;
m=-3;
for k=1:7
n=-3;
for l=1:7
sm1=sm1+h1(k,l)*g(i+m,j+n);
sm2=sm2+h2(k,l)*g(i+m,j+n);
n=n+1;
end
m=m+1;
end
cr(i-3,j-3)=sm1;
cv(i-3,j-3)=sm2;
end
end
figure,imshow(f),title('Original Image');
figure,imshow(cv),title('Convolved Image');
figure,imshow(cr),title('Correlated Image');
case 3
h1=textread('eleven.txt');
h2=rot90(rot90(h1));
g=padarray(f,[5 5]);
for i=6:r+5
for j=6:c+5
sm1=0;sm2=0;
m=-5;
for k=1:11
n=-5;
for l=1:11
sm1=sm1+h1(k,l)*g(i+m,j+n);
sm2=sm2+h2(k,l)*g(i+m,j+n);
n=n+1;
end
m=m+1;
end
cr(i-5,j-5)=sm1;
cv(i-5,j-5)=sm2;
end
end
figure,imshow(f),title('Original Image');
figure,imshow(cv),title('Convolved Image');
figure,imshow(cr),title('Correlated Image');
otherwise
error('Wrong choice');
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -