求MATLAB图像分割源程序 最好简单点带说明的
来源:学生作业帮助网 编辑:作业帮 时间:2024/07/13 08:47:23
![求MATLAB图像分割源程序 最好简单点带说明的](/uploads/image/z/6575859-27-9.jpg?t=%E6%B1%82MATLAB%E5%9B%BE%E5%83%8F%E5%88%86%E5%89%B2%E6%BA%90%E7%A8%8B%E5%BA%8F+%E6%9C%80%E5%A5%BD%E7%AE%80%E5%8D%95%E7%82%B9%E5%B8%A6%E8%AF%B4%E6%98%8E%E7%9A%84)
求MATLAB图像分割源程序 最好简单点带说明的
求MATLAB图像分割源程序 最好简单点带说明的
求MATLAB图像分割源程序 最好简单点带说明的
区域生长法:
A0=imread('1.jpg');%读入图像
seed=[100,220];%选择起始位置
thresh=15;%相似性选择阈值
A=rgb2gray(A0);
%灰度化
A=imadjust(A,[min(min(double(A)))/255,max(max(double(A)))/255],[]);
A=double(A); %将图像灰度化
B=A;
%将A赋予B
[r,c]=size(B);
%图像尺寸 r为行数,c为列数
n=r*c;
%计算图像所包含点的个数
pixel_seed=A(seed(1),seed(2));
%原图起始点灰度值
q=[seed(1) seed(2)];
%q用来装载起始位置
top=1;
%循环判断flag
M=zeros(r,c);
%建立一个与原图形同等大小的矩阵
M(seed(1),seed(2))=1;
%将起始点赋为1,其余为0
count=1;
%计数器
while top~=0
%循环结束条件
r1=q(1,1);
%起始点行位置
c1=q(1,2);
%起始点列位置
p=A(r1,c1);
%起始点灰度值
dge=0;
for i=-1:1
%周围点的循环判断
for j=-1:1
if r1+i0 & c1+j0
%保证在点周围范围之内
if abs(A(r1+i,c1+j)-p)=n
%如果满足判定条件的点个数大于等于n
top=1;
end
q=q(2:top,:);
top=top-1;
end
subplot(1,2,1),imshow(A,[]);
subplot(1,2,2),imshow(B,[]);