如何使用opencv测量线性极坐标变换数据上的距离

628mspwn  于 2021-07-14  发布在  Java
关注(0)|答案(0)|浏览(329)

我正在处理一些图像数据,我正在做一个极坐标变换,我想测量一个圆形物体中亮环的宽度。
示例图像:

到目前为止,我使用的是假数据:

import cv2
import numpy as np

img = cv2.imread('testimg.tif')
img_gry = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

# threshold image to calculate center of object

ret,thresh = cv2.threshold(img_gry,254,255,cv2.THRESH_BINARY_INV)
M = cv2.moments(thresh)
cX = int(M["m10"] / M["m00"])
cY = int(M["m01"] / M["m00"])

# convert white space around object to 0 intensity

img_gry[img_gry == 255] = 0

# calculate radius of image to be used for polar transform

radius = np.sqrt(((img_gry.shape[0]/2.0)**2.0)+((img_gry.shape[1]/2.0)**2.0))

# transform using center coordinates and radius

polar_image = cv2.linearPolar(img_gry,(cX, cY), radius, cv2.WARP_FILL_OUTLIERS)
polar_image = polar_image.astype(np.uint8)

# add gaussian smoothing

polar_blurred = cv2.GaussianBlur(polar_image,(3,3),0)

此转换如下所示:

我将研究显示强度的数据切片,比如:

我的问题是用什么公式来计算图像中亮峰的宽度。我真的不知道什么类型的轴用于显示这种转换,这是我的问题的基础。例如,我的未变换峰值的宽度约为3px,但变换后的数据的峰值宽度为8个单位(弧度?没有线索)。我想知道如何准确地根据极坐标变换数据中的“距离”来估计未变换数据的实际宽度。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题