二值图像数字矩阵的距离变换(python+opencv)

代码链接:数字图像处理距离变换实现(python+opencv)
实验要求:
1,自定义64乘64二值图,随机生成图案(像素随机置成0,1,其中1像素的数量为100个)
2,按照某种距离度量,D4或D8(这里计算的是D4即城市街区距离
3,根据二值图,计算64*64的距离矩阵,如图
二值图像数字矩阵的距离变换(python+opencv)_第1张图片

数字图像处理中三种常见的距离

二值图像数字矩阵的距离变换(python+opencv)_第2张图片

距离变换原理:

在实际处理中我们要将输入图像中1全部转为0,输入矩阵中的0转为一个比较大的值,如下图:
二值图像数字矩阵的距离变换(python+opencv)_第3张图片
然后利用两个掩膜进行扫描,参考数字图像的距离变换算法

二值图像数字矩阵的距离变换(python+opencv)_第4张图片
最终得到的更新后的数组即为距离变换的结果。
这个算法过程在图像编边界需要做出调整,因为在边界处,掩模不能全部覆盖图像,这时可以将掩模中没有对应元素的位置的值当作0来处理。
最后得到结果:
二值图像数字矩阵的距离变换(python+opencv)_第5张图片

原文博主给出了c++代码,我转为python代码放在这里:
数字图像处理距离变换实现(python+opencv)

你可能感兴趣的:(计算机视觉,opencv,python,矩阵)