【实践】数字图像处理DIP课程课业打卡实验5 图像分割


叮嘟!这里是小啊呜的学习课程资料整理。好记性不如烂笔头,今天也是努力进步的一天。一起加油进阶吧!
在这里插入图片描述

一、实验目的

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!
更多课程知识学习记录随后再来吧!

就酱,嘎啦!

在这里插入图片描述

扫描二维码关注公众号,回复: 11543245 查看本文章

注:
人生在勤,不索何获。

猜你喜欢

转载自blog.csdn.net/qq_43543789/article/details/107020061
今日推荐