मैं एक तस्वीर में हेक्सागोनल टाइलिंग की सीमाओं को पहचानना चाहूंगा, जैसे नीचे की छवि:
यह मुझे लगता है, कि एक वर्ग ग्रिड पर एक मानक दृष्टिकोण पहले कोनों (जैसे कैनी) का पता लगाने के लिए है और फिर एचओएफ परिवर्तन या कुछ इसी तरह के माध्यम से सबसे लंबी लाइनों को निकालना है ।
यह हेक्स टाइलिंग के साथ इष्टतम समाधान के रूप में नहीं दिखता है, क्योंकि बाहरी लाइनों की लंबाई कम है और उन्हें अन्य लाइनों से अलग करना मुश्किल है।
क्या इस समस्या को स्वीकार करने के लिए कोई एल्गोरिथ्म है? यह opencv में एक समाधान के लिए particulary अच्छा होगा, लेकिन मैं सामान्य विचारों में भी दिलचस्पी रखता हूं।
अपडेट करें:
अजगर और 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);
छवि का लाप्लासियन जैसा दिखता है:
मैं इस दृष्टिकोण के मापदंडों को चुनने की कोशिश करूंगा और फिर चार खंडों की सीमाओं को प्रक्षेपित करने की कोशिश करूंगा।