【实践】数字图像处理DIP课程课业打卡实验5 图像分割
叮嘟!这里是小啊呜的学习课程资料整理。好记性不如烂笔头,今天也是努力进步的一天。一起加油进阶吧!
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/ee544ab366b0419728301c438bc29b2e.png#pic_center)
一、实验目的
1、掌握p参数分割的工作原理和算法实现
2、掌握均匀性度量法分割的工作原理和算法实现
二、实验内容
1、实现P-参数法的图像分割的代码。
测试代码如下:
Im=imread('yw2_g.jpg');
[Im2]=pParam0(Im,0.7974);
imshow(Im2);
(代码复制到此处)
% Im=imread('yw2_g.jpg' );
% [Im2]=pParam0(Im, 0.7974) ;
% imshow (Im2) ;
function Im2=pParam0 (Im, perct)
bestDelta =Inf ;
BestThrd = 0;
[m, n]=size(Im);
for Thrd = 0:255
ind1=find (Im<=Thrd) ;
ind2=find (Im> Thrd) ;
if (~isempty(ind1) && ~isempty (ind2))
p1 = length(ind1)/ (m*n) ;
p2 = length(ind2)/ (m*n) ;
Delta = abs(p2-perct) ;
if ( Delta < bestDelta );
BestThrd = Thrd ;
bestDelta = Delta;
end
end
end
Im2= zeros(m, n);
Im2(find(Im>BestThrd))=1;
Im2=logical(Im2);
end
代码效果展示如下:
2、实现均匀性度量法的图像分割的代码。
测试代码如下:
Im=imread('cameraman.tif');
[Im2,BestClThrd]=jyxdl(Im);
imshow(Im2);
(代码复制到此处)
% Im=imread('cameraman.tif');
% [Im2,BestClThrd]=jyxdl(Im);
% imshow(Im2);
function [Im2, BestClThrd]=jyxdl(Im) %% Im mustbe grayScale image
BestCost = Inf ;
BestClThrd = 0;
[m, n]=size(Im);
for ClThrd = 0:255
ind1=find (Im<=ClThrd);
ind2=find(Im>ClThrd);
if (~isempty(ind1) && ~isempty (ind2))
mu1 = mean (Im(ind1));
mu2 = mean(Im(ind2));
sigmal_sq = sum((Im(ind1) -mu1).^2);
sigma2_sq = sum( (Im(ind2)-mu2).^2);
p1 = length(ind1)/(m*n);
p2 = length(ind2)/(m*n);
Cost = p1*sigmal_sq + p2*sigma2_sq;
if ( Cost < BestCost )
BestClThrd = ClThrd ;
BestCost = Cost;
%disp (BestC1Thrd);
end
end
end
Im2= zeros(m, n);
Im2(find(Im>BestClThrd))=1;
Im2=logical(Im2);
end
代码效果展示如下:
Ending!
更多课程知识学习记录随后再来吧!
就酱,嘎啦!
注:
人生在勤,不索何获。