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

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

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

在这里插入图片描述

距离变换原理:

在实际处理中我们要将输入图像中1全部转为0,输入矩阵中的0转为一个比较大的值,如下图:
在这里插入图片描述
然后利用两个掩膜进行扫描,参考数字图像的距离变换算法

在这里插入图片描述
最终得到的更新后的数组即为距离变换的结果。
这个算法过程在图像编边界需要做出调整,因为在边界处,掩模不能全部覆盖图像,这时可以将掩模中没有对应元素的位置的值当作0来处理。
最后得到结果:
在这里插入图片描述

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

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Opencv-python变换是通过使用不同的变换矩阵来实现的。其中,平移是一种最简单的空间变换。使用Opencv的函数cv2.warpAffine()可以实现平移操作。在代码中,我们需要定义一个变换矩阵M,这个矩阵是一个2行3列的矩阵,决定了平移的方式。其中,M矩阵中的tx和ty分别表示在x和y方向上平移的距离。更具体地说,如果我们向右平移tx个像素,向下平移ty个像素,那么变换矩阵M的定义如下: import numpy as np rows, cols = img.shape[:2] M = np.float32([[1, 0, tx], [0, 1, ty]]) dst = cv2.warpAffine(img, M, (cols, rows)) 在上述代码中,我们使用了NumPy库来创建一个2x3的浮点型变换矩阵M,并将其传递给cv2.warpAffine()函数,该函数会将像img按照定义的方式进行平移,并生成一个新的像dst。最后,我们可以通过cv2.imshow()函数显示平移后的像。 除了平移之外,Opencv还提供了其他的变换操作,比如缩放。缩放可以按照指定的宽度和高度来调整像的大小,也可以按照比例来进行缩放。通过cv2.resize()函数可以实现缩放操作。在代码中,我们可以使用下面的方式来进行缩放操作: import cv2 img = cv2.imread('drawing.jpg') # 按照指定的宽度、高度缩放片 res = cv2.resize(img, (width, height)) # 按照比例缩放片 res2 = cv2.resize(img, None, fx=scale_x, fy=scale_y, interpolation=cv2.INTER_LINEAR) 在上面的代码中,我们首先使用cv2.imread()函数读取像,并将其存储在变量img中。然后,我们可以使用cv2.resize()函数来调整像的大小。其中,如果我们指定了宽度和高度,那么像将按照这些指定的大小进行缩放;如果我们指定了fx和fy的比例因子,那么像将按照这些比例进行缩放。最后,我们可以使用cv2.imshow()函数来显示缩放后的像。 总结起来,Opencv-python提供了多种变换操作,包括平移、缩放等。通过使用相应的函数和变换矩阵,我们可以实现对像的各种变换操作。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [opencv-python 详解像的几何变换缩放、平移、旋转、翻转](https://blog.csdn.net/RayChiu757374816/article/details/120036004)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

happylife_mini

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值