怎么对图像进行距离变换?

2025-11-07 22:31:23

1、先给出一幅图片:

i=Rasterize@

 Graphics[{Green, Disk[{0, 0}, {2, 3}], Red, Disk[{-2, 3}, {1, 2/3}]},

   PlotRange -> 5, Background -> Black]

怎么对图像进行距离变换?

2、对i进行距离变换:

a = DistanceTransform[i]

这里,把图像的黑色部分默认为背景了。

前景全部变成了白色区域,背景保持为黑色。

怎么对图像进行距离变换?

3、j = Rasterize@

  Graphics[{Black, Disk[{0, 0}, {2, 3}], Red, 

    Disk[{-2, 3}, {1, 2/3}]}, PlotRange -> 5, Background -> Green]

此时,进行距离变换,会有什么效果呢?

怎么对图像进行距离变换?

4、b = DistanceTransform[j]

仍旧把黑色默认为背景,而别的颜色的区域都视为前景。

怎么对图像进行距离变换?

5、让图像里面没有黑色像素:

h = Rasterize@

  Graphics[{Blue, Disk[{0, 0}, {2, 3}], Red, Disk[{-2, 3}, {1, 2/3}]},

    PlotRange -> 5, Background -> Green]

怎么对图像进行距离变换?

6、此时,Mathematica好像不能识别谁是背景,因为距离变换的结果,是空白的。

c = DistanceTransform[h]

怎么对图像进行距离变换?

7、此时,每一个像素值,都是1。

ImageData[c][[101 ;; 136, 101 ;; 136]] // MatrixForm

怎么对图像进行距离变换?

1、找出图像a里面的像素的最大值,就可以确定,前景里面,到背景最远的点的位置:

data = ImageData[a];

{u, v} = Dimensions[data];

MaximalBy[

 Flatten[Table[{m, n, data[[m, n]]}, {m, u}, {n, v}], 1], Last]

怎么对图像进行距离变换?

2、对图像进行标准化处理,也就是按比例缩小a各像素的值,使最大值不超过1。

ImageAdjust[a]

怎么对图像进行距离变换?

怎么对图像进行距离变换?

3、图像配准还可以这样:

a/Max@Flatten@ImageData[a]

怎么对图像进行距离变换?

1、给出下图。

怎么对图像进行距离变换?

2、距离变换。

只保留黑色部分,其余颜色变成了白色。

怎么对图像进行距离变换?

3、图像配准。

怎么对图像进行距离变换?

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢