如何解决分水岭的过度分割

用户名

我的输入图片是

在此处输入图片说明

输出图像是

在此处输入图片说明

预期的输出是这样的

在此处输入图片说明

可以看到有些类似椭圆的结构已与矩形合并。此外,我无法分离每个标签来获得椭圆。使用的算法是分水岭

clear; close all;
I = imread('Sub.png');
I = rgb2gray(I);
figure; imshow(I)
I2 = imtophat(I, strel('square', 45));
figure; imshow(I2)
% Alpha=.047;
% h = fspecial('motion', 10, 5);
% w=gausswin(I2,Alpha)  % you'll have to play with N and alpha
% I2 = imfilter(I2,h,'same','symmetric'); % something like these options
level = .047;
BW = im2bw(I2,level);
D = -bwdist(~BW,'chessboard');
D(~BW) = -Inf;

L = watershed(D);
imshow(label2rgb(L,'jet','w'))

最终开放代码:

ImageSource=imread('cameraman.tif');
ImTmp=ImageSource
ImResidue = zeros(size(ImageSource));
ImIndicator= zeros(size(ImageSource));
ImValues= zeros(size(ImageSource));
For size= 1 : N
se = strel('square',N);
ImOp  = imopen(ImageSource,se);
ImDiff=imabsdiff(ImOp,ImTmp)
if ImResidue < ImDiff then
               ImResidue = ImDiff
               ImIndicator = size
               ImValues = ImOp
end
ImTmp=ImOp
end
FiReTiTi

如果您想要准确的内容,则必须使用带有标记的分水岭,但这将变得更加棘手。默认情况下,基本分水岭在路段上,因为它使用每个局部最小值作为标记。

因此,您必须对图像进行一些预处理,以增加要分割的对象之间的间隔,然后使用标记来引导分水岭。

[根据您的编辑编辑]如果您只想要椎骨之间的小结构,那么我建议进行小的侵蚀,以增加它们之间的间隙,然后进行最终开口。当椎骨需要较大的椎骨时,所需的结构将以较小的半径消失。

不要忘记在渐变图像上使用标记。

[编辑2,初步结果]我对您的问题感到好奇,因此尝试了一下。我没有去到椎骨之间的小区域(要分割的区域),而是尝试先分割椎骨(想要在它们之间的区域)。

这是我所做的:

  1. 小开口(正方形1阶,正方形更快,更细,因为您可以使患者在图像中很好地定向,否则可以取盘或六角形),以增加椎骨及其附近区域之间的间隙。
  2. 区域开口(表面23,但这并不重要),以使不同区域平坦,因此消除峰。
  3. 区域闭合(表面23,但这并不重要),以便再次使不同区域变平,因此填充孔。此时查看图像结果瞧,一切看起来都比较流畅,但是不同的边界/边缘仍然完好无损。
  4. 终极开放(UO)。
  5. 根据最终开放结果(残留,值和指标)的阈值。参见椎骨近似我没有值了(我已经删除了代码),但是您可以查看一下UO结果并找到它们。但是,如果您愿意,我仍然有UO结果。
  6. 打开(磁盘顺序7)以擦除所有伪像和误报(椎骨很大)
  7. 与5相同的操作,以近似要分割的小图案。查看结果
  8. 为了使外部标记(在椎骨之间)具有在步骤7上产生的较小腐蚀结果。我用步骤6的结果的大扩张边界(磁盘顺序11)完成了外部标记。
  9. 这是我得到的标记
  10. 用计算的标记进行分水岭,这是初步结果

您想要分割的图案在椎骨之间,所以我想这个结果会缩小很多感兴趣的区域。

对你起作用吗?

我无法共享代码,但是我想您应该在MatLab中找到所有内容。

您可以通过检测矩形来改善此结果。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何解决分水岭的过度分割

来自分类常见问题

如何在分水岭分割中添加坐标?

来自分类Dev

如何找到以分水岭分割的区域的中心点?

来自分类Dev

如何找到以分水岭分割的区域的中心点?

来自分类Dev

如何创建用于分水岭分割的多边形

来自分类Dev

分水岭分割后提取对象

来自分类Dev

分水岭图像分割JavaCv,未进行分割

来自分类Dev

分水岭分割后如何创建矢量多边形对象

来自分类Dev

图像分割,分水岭,瀑布,p算法

来自分类Dev

在Objective-C中实现分水岭分割

来自分类Dev

使用opencv的分水岭Java实现

来自分类Dev

比较分水岭和抓斗

来自分类Dev

如何使用opencv和python在灰度图像上应用分水岭?

来自分类Dev

OpenCV分水岭:4点连接

来自分类Dev

分水岭-灰度图像中的局部最小值

来自分类Dev

分水岭算法后边界框和圆圈过多

来自分类Dev

mathworks.com上的二维分水岭示例

来自分类Dev

如何解决theano分割错误?

来自分类Dev

如何解决错误?

来自分类Dev

如何解决程序

来自分类Dev

如何解决MySQLSyntaxErrorException

来自分类Dev

如何解决devtools

来自分类Dev

如何解决MongoWaitQueueFullException?

来自分类Dev

如何解决StackOverflowException

来自分类Dev

如何解决InputMismatchException?

来自分类Dev

如何解决OptimisticLockingFailureException?

来自分类Dev

如何解决WebappClassLoaderBase

来自分类Dev

如何解决悬停

来自分类Dev

如何解决SqlNullValueException?