「組」是指像素集合中的每個像素在同一個集合中至少有一個相鄰像素,該圖形顯示一個小組。如何在同一像素組中找到距離另一個像素最遠的像素
我想找到其具有從指定像素的最大直線距離(例如,綠色像素)的像素。連接兩個像素的直線(紅線)不得離開組。
我的解決方案是循環遍歷度數並模擬從具有度數的綠色像素開始的行的進度,並查看哪條線行進了最遠的距離。
longestDist = 0
bestDegree = -1
farthestX = -1
farthestY = -1
FOR EACH degree from 0 to 360
dx=longestDist * cos(degree);
dy=longestDist * sin(degree);
IF Point(x+dx , y+dy) does not belong to the group
Continue with next degree
//Because it must not be the longest line, so skip it
END IF
(farthestX , farthestY) = simulate(x,y,degree)
d = findDistance(x , y , farthestX , farthestY)
IF d > longestDist
longestDist = d
bestDegree = degree
END IF
END FOR
這顯然不是最好的算法。因此我在這裏尋求幫助。
謝謝你,併爲我可憐的英語感到抱歉。
請注意,您可以放棄所有內部像素的計算。 – dfens
而且你不需要使用角度。你只需要使用畢達哥拉斯定理;) – dfens
@dfens:「內部像素」 - 爲什麼?其中之一可能是解決方案。 –