图像形态学处理——灰度平滑(Matlab)
最新推荐文章于 2024-08-19 12:05:49 发布

lengo 于 2019-09-05 19:23:07 发布
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
clc;
clear all;
close all;
%灰度平滑测试图像
I=im2double(imread('D:Gray Files9-38.tif'));
%==============================灰度平滑====================================
%半径为3的磁盘(disk)结构元素
% r=3;
% 半径为5的磁盘(disk)结构元素
r=5;
B=ones(2*r-1,2*r-1);
%将距离大于40的点置零
for i=1:2*r-1
for j=1:2*r-1
d=sqrt((i-r)^2+(j-r)^2);
if d>r
B(i,j)=0;
end
end
end
n=2*r-1;
ind=find(B==0);
n_l=floor(n/2);
I_pad=padarray(I,[n_l,n_l],'symmetric');
[M,N]=size(I);
J_Smoothing=zeros(M,N);
%-------------------------------灰度开操作---------------------------------
J_Opening=zeros(M,N);
%腐蚀操作
J_Erosion=zeros(M,N);
for i=1:M
for j=1:N
%获得图像子块区域
Block=I_pad(i:i+2*n_l,j:j+2*n_l);
C=Block.*B;
%删除0值,保留4连通数值
C=C(:);
C(ind)=[];
J_Erosion(i,j)=min(C);
end
end
%对腐蚀图像进行扩展
J_Erosion_pad=padarray(J_Erosion,[n_l,n_l],'symmetric');
%膨胀图像
for i=1:M
for j=1:N
%获得图像子块区域
Block=J_Erosion_pad(i:i+2*n_l,j:j+2*n_l);
C=Block.*B;
%删除0值,保留4连通数值
C=C(:);
C(ind)=[];
J_Opening(i,j)=max(C);
end
end
%-------------------------------灰度闭操作---------------------------------
%继续将灰度开操作的结果实施闭操作
J_Opening_pad=padarray(J_Opening,[n_l,n_l],'symmetric');
%膨胀图像
J_Dilation=zeros(M,N);
for i=1:M
for j=1:N
%获得图像子块区域
Block=J_Opening_pad(i:i+2*n_l,j:j+2*n_l);
C=Block.*B;
%删除0值,保留4连通数值
C=C(:);
C(ind)=[];
J_Dilation(i,j)=max(C);
end
end
%对膨胀图像进行扩展
J_Dilation_pad=padarray(J_Dilation,[n_l,n_l],'symmetric');
%腐蚀操作
for i=1:M
for j=1:N
%获得图像子块区域
Block=J_Dilation_pad(i:i+2*n_l,j:j+2*n_l);
C=Block.*B;
%删除0值,保留4连通数值
C=C(:);
C(ind)=[];
J_Smoothing(i,j)=min(C);
end
end
subplot(121)
imshow(I)
subplot(122)
imshow(J_Smoothing)
相关知识
MATLAB图像识别技术在棉花叶面病虫害识别
MATLAB图像识别技术在绿叶面病虫害识别
MATLAB图像识别技术在棉花叶面病虫害识别上的
基于MATLAB的农业病虫害识别系统
【病虫害识别】SVM病虫害识别系统【含GUI Matlab源码 2429期】
彩色图像处理(matlab)
MATLAB植物叶片虫害识别技术
使用Matlab对HDF5卫星图像数据进行可视化及地表温度分析
花老湿OpenCV学习:形态学操作(开、闭运算,形态学梯度,顶帽,黑帽)
MATLAB植物虫害识别
原文链接: 图像形态学处理——灰度平滑(Matlab) https://m.huajiangbk.com/newsview496432.html
| 上一篇: 永顺县落叶木莲花的形态学研究 | 下一篇: matlab与数字图像处理 |



