Bởi "Nhóm", ý tôi là một tập hợp pixel sao cho mỗi pixel ít nhất có một pixel liền kề trong cùng một tập, bản vẽ hiển thị ví dụ về một nhóm.Cách tìm điểm ảnh xa nhất với điểm ảnh khác trong cùng nhóm pixel
Tôi muốn tìm ra điểm ảnh mà là có dòng khoảng cách lớn nhất trực tiếp từ một điểm ảnh được chỉ định (ví dụ, các điểm ảnh màu xanh lá cây). Và đường thẳng nối hai điểm ảnh (đường màu đỏ) không được rời khỏi nhóm.
Giải pháp của tôi là lặp qua các độ và mô phỏng tiến trình của các dòng bắt đầu từ pixel màu xanh lá cây với mức độ và xem dòng nào đi xa nhất.
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
Rõ ràng đây không phải là thuật toán tốt nhất. Vì vậy, tôi yêu cầu giúp đỡ ở đây.
Cảm ơn và xin lỗi vì tiếng Anh kém của tôi.
Lưu ý rằng bạn có thể hủy tính toán cho tất cả các pixel nội bộ. – dfens
Và bạn không cần phải sử dụng góc. Bạn chỉ cần sử dụng định lý Pythagore;) – dfens
@dfens: "pixel nội thất" - tại sao? một trong số đó có thể là giải pháp. –