5
$\开始组$

我有一个圆形图像(如下),想获得一个Voronoi网格。

在此处输入图像描述

我能够获得图像中细胞的中心

cells=流域组件[image];centers00=组件测量值[单元格,“质心”];centers0=centers00[[All,2]]像素;

我试过很多方法(如交叉、跳跃……),但没有一种效果好。有什么主意吗?

新贡献者
蕾切尔·阿列纳是此网站的新贡献者。请注意要求澄清、评论和回答。查看我们的行为准则.
$\端组$
2

3个答案

重置为默认值
6
$\开始组$

正如我在上一个问题中所述,您应该使用边缘过滤器然后测量质心:

image=导入[“https://i.sstatic.net/2fjQth5M.png"];edge=边缘检测[图像,2];centers=ComponentMeasurements[边,“质心”]//值;HighlightImage[图像,点@中心,图像大小->400]

在此处输入图像描述

现在创建剪裁的Voroni网格:

imgBounds=转置[{{0,0},图像维度[image]}];vm=VoronoiMesh[中心,imgBounds,网格单元样式->{{2,全部}->Black,{1,全部}->White}]

在此处输入图像描述

您还可以将其转换回图像,并乘以图像的圆形部分,以查看其对齐情况。我必须删除Voroni Mesh周围的白色边框,以便对齐:

场景=图像@显示[vm,图形[{洋红色,点[centers]}]];(*去掉白色边框*)blackPix=图像值位置[场景,黑色];bounds=最小值/@(Transpose[blackPix]);argTake=加入[{scene},反转@bounds];场景=ImageTake@@argTake;(*缩放到图像大小*)scene=ImageResize[scene,ImageDimensions[image]];circ=Binarize[image,0.99]//颜色否定;ImageMultiply[scene,circ]+ColorNegate[circ]

![![![在此处输入图像描述

我们看到Voroni Mesh看起来与原始图像相当。


如果你想继续使用你的方法,你可以使用流域组件,但您需要删除圆外部的所有小而嘈杂的流域:

cells=流域组件[image];cellImg=单元格//着色

在此处输入图像描述

这可以通过以下方式实现删除SmallComponents:

最小尺寸=100;newCells=DeleteSmallComponents[cellImg,minSize]

在此处输入图像描述

现在测量质心并高亮显示:

centers00=组件测量[newCells,“质心”];centers0=中心00[[全部,2]];HighlightImage[图像,点@中心0]

在此处输入图像描述

并使用与之前相同的方法创建剪裁的Voroni网格,将其转换为图像,然后查看圆形部分:

vm=VoronoiMesh[中心0,imgBounds,网格单元样式->{{2,全部}->Black,{1,全部}->White}];场景=图像@显示[vm,图形[{洋红色,点[centers0]}]];(*去掉白色边框*)blackPix=ImageValuePositions[场景,黑色];bounds=最小值/@(Transpose[blackPix]);argTake=加入[{scene},反转@bounds];场景=ImageTake@@argTake;(*缩放到图像大小*)scene=ImageResize[scene,ImageDimensions[image]];circ=二值化[图像,0.99]//ColorNegate;ImageMultiply[scene,circ]+ColorNegate[circ]

![![在此处输入图像描述

$\端组$
2
$\开始组$

VoronoiMesh[中心0]

在此处输入图像描述

根据需要进行裁剪。

$\端组$
2
$\开始组$

请参阅简洁的例子资源功能的双曲线距离

以下是一个削减使用Beltrami模型和公制的版本只是为了显示(不如简洁的示例好)。信用卡资源功能。

h=资源函数[“双曲线距离”];r=随机点[Disk[],20];nf=最近[r->“距离”,距离函数->(h[#1,#2,“Beltrami”]&)];函数[{x,y}]:=模块[{d=nf[{x,y},2],t},t=1-剪辑[重缩放[d[[1]],{-6,6},{0,1}]];最大[t,d[[1]]/d[[2]]];密度图[函数[{x,y}],{x,y}\[元素]磁盘[{0,0},0.99],Epilog->{White,Point[r]},PlotPoints->50]

单元磁盘中的20个随机点。以下gif是十个示例:

在此处输入图像描述

$\端组$

你的答案

单击“发布您的答案”,表示您同意我们的服务条款并确认您已阅读我们的隐私政策.

不是你想要的答案吗?浏览标记的其他问题问你自己的问题.