「グループ」とは、すべてのピクセルが同じセット内に少なくとも 1 つの隣接するピクセルを持つようなピクセルのセットを意味します。図はグループの例を示しています。
指定したピクセル (たとえば、緑色のピクセル) からの直線距離が最大のピクセルを見つけたいと考えています。また、2 つのピクセルを結ぶ直線 (赤い線) がグループを離れてはなりません。
私の解決策は、度をループし、緑色のピクセルから始まる線の進行を度でシミュレートし、どの線が最も遠くまで移動したかを確認することです。
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
これは明らかに最適なアルゴリズムではありません。したがって、私はここで助けを求めています。
ありがとう、そして私の下手な英語でごめんなさい。