附 录 1 彩色图像的灰度化
A=imread('hua.tif');% 读取图片文件中的数据
[m,n,r]=size(A);% 直接显示出 A 大小
B=zeros(m,n);% 产生 m×n 的零矩阵
B = uint8(B); %表示 256 级灰度
for i = 1:m
for j = 1:n
sum = 0;
for k = 1:r
sum = sum +A(i,j,k)/3;
end
B(i , j) = sum;
end
end
figure(1);%控制窗口的数量,即每次只能显示一个窗口
imshow(B);% 显示图像的函数
title('平均值法-中北大学');
附 录2
MAD算法源代码¨
[FileName2,PathName2] = uigetfile('*.bmp');%获取所选文件的信息
pic= imread(FileName2);
[FileName,PathName] = uigetfile('*.bmp');
moban=imread(FileName);
pic=im2double(pic);% 把图像数据类型转换为双精度浮点类型
moban=im2double(moban);
subplot(2,2,1);% 将多个图画到一个平面上的工具
imshow(pic);% 显示图像的函数
subplot(2,2,2);
imshow(moban);
pic1=pic;
[M,N]=size(pic); % 直接显示出pic的大小
[m,n]=size(moban);
d=zeros(M-m,N-n); % 产生(M-m)×(N-n)的零矩阵
tic;
for x=1:M-m
for y=1:N-n
c=abs(pic(x:x+m-1,y:y+n-1)-moban(:,:));
mean=sum(c(:))/numel(c(:));
d(x,y)=mean;
end
end
subplot(2,2,3);
surf(d),shading flat %表示成图形输出出来
[min_d, icmin] = min(d(:));
[p,q] = ind2sub(size(d),icmin(1));% 把数组中元素索引值转换为该元素在数组中对应的下标
toc;
pic1(:,:)=255;
pic1(p:p+m,q:q+n)=pic(p:p+m,q:q+n);
msgbox(num2str([p,q]), 'location');% 可以实现提示窗口
subplot(2,2,4);
imshow(pic1);