我正在使用霍夫变换(https://en.wikipedia.org/wiki/Hough_transform)来获取段的数量和大小。
例如,我已经上传了一张图像(它是生物纤维的荧光图像)以及霍夫变换的结果。
a = np.array([[40,33,54,4],[40,34,54,5], [41,34,55,5], [43,34,57,7], [18,85,34,52], [15,83,30,51], [16,84,33,52], [42,34,56,5], [16,83,32,51]])
[基本上,它给出了一个由n * 4个元素组成的数组(它们是每行的末端:(x1,y1,x2,y2))。如您所见,此处的算法报告为n = 10行,但实际上只有2行。
为了处理此问题,我正在考虑采用每条线的x1和x2位置,然后定义线段。与建议的内容类似,可以进行以下操作(finding unions of line segments on a number line)。
对于第一行(x1 = 40,x2 = 54),我可以创建一个仅包含0和1的向量,其内容为:00000 ....... 0000001111 .... 111100。那是40个零,然后是15个,再是2个零。长度为57,因为这是最大的x2值。
我可以对所有行这样进行。
假设三行:
00011100000000
00000000001111
00111111000000
结果将是
00111111001111
然后我会知道有两条长度为6(从2开始)和4(从10开始)的线。
在python中有效率吗?
最佳,
W