数字图像处理完整MATLAB代码在我的资源可以看到,为方便下载,下面是百度网盘资源:
链接:https://pan.baidu.com/s/17S7PZJwwvb3PFMFVxqEY5w 提取码:HUAT
在对图像进行局部处理的时候通常会用到掩膜,掩膜与图像进行与运算后生成的二值图
像显示了你感兴趣的图像部分,同时也可以减少数据的处理量。以下以[300 300]的图像进行掩膜处理的过程,进行图像与掩膜尺寸的统一([300 300]大小),不仅可以突出你感兴趣的图像部分,事实上,这样还有利于你处理掩膜部分后你感兴趣的图像部分得到的数据,通过用plot将这些数据(线、点、圈等数据线元素)显示在完整的原图上,而不仅仅是显示在掩膜后的部分图像上。废话少说,上代码,你自行体验。
%主函数
I1=imread("C:\Users\A\Desktop\picture\建筑.JPG");
I2=imresize(I1,[300 300]);%将图像转换成与掩膜同等大小的矩阵
I3=im2gray(I2);%转换为二维灰度图像
BW = edge(I3,'canny');%边缘检测
my_mask = mask_rectangle(BW);%与生成的掩膜进行与运算
% imshow(BW);%显示完整的图像
imshow(my_mask);%显示与掩膜进行运算后的图像
%功能函数(矩形掩膜函数)
function mask_s = mask_rectangle(img)
%生成【300 300】矩阵掩膜
%矩阵窗(矩形内为ones矩阵)为(50<=j)&&(j<=250)&&(100<=i)&&(i<=300)
%生成的掩膜与图像[300 300]做与运算并输出
mask=ones([300 300]);
for i=1:300
for j=1:300
if ((50<=j)&&(j<=250)&&(100<=i)&&(i<=300))
h = 1;
else
h = 0;
end
mask_d(i,j) = h*mask(i,j);
end
end
mask_s=mask_d&img;%与运算
end
边缘检测后的完整原图
进行掩膜后,你感兴趣的部分(当然可以根据你感兴趣的区域设计属于你的掩膜)
这是上面说的矩形掩膜 (当然可以根据你感兴趣的区域设计属于你的掩膜)
精彩链接
发表评论