我正在处理一些图像数据,我正在做一个极坐标变换,我想测量一个圆形物体中亮环的宽度。
示例图像:
到目前为止,我使用的是假数据:
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个单位(弧度?没有线索)。我想知道如何准确地根据极坐标变换数据中的“距离”来估计未变换数据的实际宽度。
暂无答案!
目前还没有任何答案,快来回答吧!