아래 이미지와 같이 사진에서 육각형 타일링 의 경계 를 알고 싶습니다.
정사각형 그리드에서 표준 접근 방식은 먼저 모서리 (예 : 캐니)를 감지 한 다음 Hough 변환 또는 이와 유사한 것을 통해 가장 긴 선을 추출하는 것 같습니다.
이것은 외부 타일의 길이가 짧고 다른 라인과 분리하기가 어렵 기 때문에 16 진 타일링에서 최적의 솔루션으로 보이지 않습니다.
이 문제를 해결하는 알고리즘이 있습니까? opencv에서 솔루션을 얻는 것이 특히 좋을 것이지만 일반적인 아이디어에도 관심이 있습니다.
최신 정보:
파이썬과 opencv를 사용하면이 결과를 얻을 수있었습니다.
내 코드는 다음과 같습니다.
import cv2
import numpy as np
imgOrig = "test1";
img = cv2.imread(imgOrig+".jpg");
lap = cv2.Laplacian(img, cv2.IPL_DEPTH_32F, ksize = 3)
imgray = cv2.cvtColor(lap,cv2.COLOR_BGR2GRAY)
ret,thresh = cv2.threshold(imgray,127,255,0)
contours, hierarchy = cv2.findContours(thresh,cv2.RETR_TREE,cv2.CHAIN_APPROX_NONE)
size = img.shape
m = np.zeros(size, dtype=np.uint8)
for i, cnt in enumerate(contours):
if cv2.contourArea(cnt) >= 1:
color = (255,255,255)
cv2.drawContours(m, cnt, -1, color, -1)
cv2.imwrite(str(imgOrig)+"contours.jpg", m);
이미지의 라플라시안은 다음과 같습니다.
이 방법의 매개 변수를 최적화 한 다음 네 섹션의 경계를 보간하려고합니다.