【图像分割】【由局部高斯分布拟合能量驱动的活动轮廓】基于区域的主动轮廓模型,采用变分水平集形式用于图像分割(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

📋📋📋本文目录如下:🎁🎁🎁

目录

💥1 概述

📚2 运行结果

2.1 测试1

2.2 测试2

2.3 测试3

2.4 测试4

2.5 测试5

🎉3 参考文献

🌈4 Matlab代码、文章下载


💥1 概述

文献来源:

本文提出了一种基于区域的主动轮廓模型,采用变分水平集形式用于图像分割。在我们的模型中,局部图像强度由具有不同均值和方差的高斯分布描述。我们定义了一个局部高斯分布拟合能量,其中包含一个水平集函数和局部均值和方差作为变量。能量最小化通过交替进行水平集演化和估计局部强度均值和方差的迭代过程来实现。局部强度的均值和方差被视为空间变化的函数,以处理不均匀强度和空间变化强度的噪声(例如乘法噪声)。此外,我们的模型能够区分具有相似强度均值但不同方差的区域。通过将我们的方法应用于带有噪声和纹理的图像,可以区分不同区域的纹理模式和局部强度方差。比较实验证明了所提出方法的优点。

图像分割是许多图像处理和计算机视觉应用中的基础任务。由于存在噪声、低对比度和强度不均匀性,在大多数应用中仍然是一个困难的问题。特别是强度不均匀性对经典分割技术如边缘检测和阈值处理构成了重要挑战。

图像分割在过去几十年中得到了广泛研究。一类被广泛使用且经过充分验证的方法是主动轮廓模型,该模型在图像分割中取得了令人满意的结果。这些模型能够实现亚像素精度,并提供闭合且平滑的轮廓/表面。现有的主动轮廓模型大致可分为两类:基于边缘的模型和基于区域的模型。基于边缘的模型利用图像梯度来指导曲线演化,通常对噪声和弱边缘敏感。而基于区域的模型通常通过使用特定的区域描述符(如强度、颜色、纹理或运动)来识别感兴趣的每个区域,从而引导轮廓的移动。因此,基于区域的模型通常在存在图像噪声和弱对象边界时表现更好。此外,基于区域的模型对于初始轮廓位置的敏感性较基于边缘的模型要小。详细文章见第4部分。

📚2 运行结果

2.1 测试1

2.2 测试2

2.3 测试3

2.4 测试4

2.5 测试5

部分代码:

Img=imread('5.bmp');
Img = double(Img(:,:,1));

NumIter = 250; %iterations
timestep=0.1; %time step
mu=0.1/timestep;% level set regularization term, please refer to "Chunming Li and et al. Level Set Evolution Without Re-initialization: A New Variational Formulation, CVPR 2005"
sigma = 5;%size of kernel
epsilon = 1;
c0 = 2; % the constant value 
lambda1=1.0;%outer weight, please refer to "Chunming Li and et al,  Minimization of Region-Scalable Fitting Energy for Image Segmentation, IEEE Trans. Image Processing, vol. 17 (10), pp. 1940-1949, 2008"
lambda2=1.0;%inner weight
%if lambda1>lambda2; tend to inflate
%if lambda1<lambda2; tend to deflate
nu = 0.001*255*255;%length term
alf = 20;%data term weight


figure,imagesc(uint8(Img),[0 255]),colormap(gray),axis off;axis equal
[Height Wide] = size(Img);
[xx yy] = meshgrid(1:Wide,1:Height);
phi = (sqrt(((xx - 40).^2 + (yy - 50).^2 )) - 15);
phi = sign(phi).*c0;


Ksigma=fspecial('gaussian',round(2*sigma)*2 + 1,sigma); %  kernel
ONE=ones(size(Img));
KONE = imfilter(ONE,Ksigma,'replicate');  
KI = imfilter(Img,Ksigma,'replicate');  
KI2 = imfilter(Img.^2,Ksigma,'replicate'); 

figure,imagesc(uint8(Img),[0 255]),colormap(gray),axis off;axis equal,
hold on,[c,h] = contour(phi,[0 0],'r','linewidth',1); hold off
pause(0.5)

🎉3 参考文献

文章中一些内容引自网络,会注明出处或引用为参考文献,难免有未尽之处,如有不妥,请随时联系删除。

🌈4 Matlab代码、文章下载

  • 40
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值