Saya ingin mengenali batas - batas ubin heksagonal dalam foto, seperti pada gambar di bawah ini:
Sepertinya saya, bahwa pendekatan standar pada kotak persegi adalah pertama-tama mendeteksi sudut (misalnya cerdik) dan kemudian mengekstrak garis terpanjang melalui transformasi Hough atau yang serupa.
Ini tidak terlihat sebagai solusi optimal dengan hex tiling, karena panjang garis luar lebih pendek dan sulit untuk memisahkannya dari garis lain.
Apakah ada algoritma untuk mengatasi masalah ini? Terutama menyenangkan untuk memiliki solusi dalam OpenCV, tetapi saya juga tertarik pada ide-ide umum.
memperbarui:
Dengan python dan opencv saya dapat menerima hasil ini:
Ini kode saya:
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);
Laplacian gambar terlihat seperti:
Saya akan mencoba untuk memilih parameter dari pendekatan ini dan kemudian mencoba untuk menginterpolasi batas dari empat bagian.