আমি কোনও ছবিতে ষড়ভুজ টাইলিংয়ের সীমানা সনাক্ত করতে চাই , নীচের চিত্রের মতো:
আমার কাছে মনে হয়, স্কোয়ার গ্রিডে একটি স্ট্যান্ডার্ড পদ্ধতি হ'ল প্রথমে কোণগুলি সনাক্ত করা (যেমন ক্যানি) এবং তারপরে একটি হুফ ট্রান্সফর্ম বা অনুরূপ কোনও কিছুর মাধ্যমে দীর্ঘতম লাইনগুলি বের করা ।
এটি হেক্স টাইলিংয়ের সাথে সর্বোত্তম সমাধান হিসাবে দেখায় না, কারণ বাইরের লাইনের দৈর্ঘ্য সংক্ষিপ্ত এবং এগুলি অন্যান্য লাইনের থেকে পৃথক করা শক্ত।
এই সমস্যাটি সমাধান করার জন্য কি কোনও অ্যালগরিদম রয়েছে? ওপেনসিভিতে কোনও সমাধান পেতে বিশেষত এটি চমৎকার হবে তবে আমি সাধারণ ধারণাগুলিতেও আগ্রহী।
হালনাগাদ:
পাইথন এবং ওপেনসিভি দিয়ে আমি এই ফলাফলটি পেতে সক্ষম হয়েছি:
আমার কোডটি এখানে:
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);
চিত্রের ল্যাপ্লাসিয়ান দেখতে দেখতে:
আমি এই পদ্ধতির প্যারামিটারগুলি অনুকূল করার চেষ্টা করব এবং তারপরে চারটি বিভাগের সীমানাটি বিভক্ত করার চেষ্টা করব।