বোর্ডগেমে ষড়ভুজ টাইলিংকে কীভাবে চিনবেন?


16

আমি কোনও ছবিতে ষড়ভুজ টাইলিংয়ের সীমানা সনাক্ত করতে চাই , নীচের চিত্রের মতো:

এখানে চিত্র বর্ণনা লিখুন

আমার কাছে মনে হয়, স্কোয়ার গ্রিডে একটি স্ট্যান্ডার্ড পদ্ধতি হ'ল প্রথমে কোণগুলি সনাক্ত করা (যেমন ক্যানি) এবং তারপরে একটি হুফ ট্রান্সফর্ম বা অনুরূপ কোনও কিছুর মাধ্যমে দীর্ঘতম লাইনগুলি বের করা ।

এটি হেক্স টাইলিংয়ের সাথে সর্বোত্তম সমাধান হিসাবে দেখায় না, কারণ বাইরের লাইনের দৈর্ঘ্য সংক্ষিপ্ত এবং এগুলি অন্যান্য লাইনের থেকে পৃথক করা শক্ত।

এই সমস্যাটি সমাধান করার জন্য কি কোনও অ্যালগরিদম রয়েছে? ওপেনসিভিতে কোনও সমাধান পেতে বিশেষত এটি চমৎকার হবে তবে আমি সাধারণ ধারণাগুলিতেও আগ্রহী।

হালনাগাদ:

পাইথন এবং ওপেনসিভি দিয়ে আমি এই ফলাফলটি পেতে সক্ষম হয়েছি: contours এবং

আমার কোডটি এখানে:

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

আমি এই পদ্ধতির প্যারামিটারগুলি অনুকূল করার চেষ্টা করব এবং তারপরে চারটি বিভাগের সীমানাটি বিভক্ত করার চেষ্টা করব।


5
সিগন্যাল প্রসেসিং ইউরো-গেমিংয়ের সাথে মিলিত হয়; আমার গৌরব ইন্দ্রিয় গুলিয়ে উঠছে!
নিস্পিও

1
আপনি যদি সর্বদা একই আকারের বোর্ড ব্যবহার করে থাকেন এবং চিত্রটিতে সর্বদা বোর্ডের প্রায় একই দৃষ্টিভঙ্গি থাকে তবে আপনি আকার এবং রেজিস্ট্রেশন নির্ধারণের জন্য বোর্ডের বাহ্যরেখাকে স্বীকৃতি হিসাবে সমস্যার সমাধান করতে সক্ষম হতে পারেন। টাইলস স্থাপন এবং আকার বোর্ডের প্রান্তগুলির সাথে সম্মতিতে ধ্রুবক, তাই আপনার সমস্ত প্রান্তটি কোথায় রয়েছে তা জানার পরে আপনার অভ্যন্তরের টাইলগুলির অবস্থান সঠিকভাবে অনুমান করতে সক্ষম হওয়া উচিত।
নিসপিও

আপনার পরামর্শের জন্য ধন্যবাদ, @ স্প্যানিও। বোর্ডের আকার সর্বদা একই থাকে, তবে বোর্ডের দৃষ্টিভঙ্গি কিছুটা পরিবর্তিত হতে পারে। অন্যান্য ছবিতে ব্যাকগ্রাউন্ডের রঙও আলাদা, যা অনেক কম বৈপরীত্যের দিকে নিয়ে যায়। পটভূমি উদাহরণস্বরূপ বেইজ হয় তবে বাহ্যরেখার অবস্থান নির্ধারণ করা শক্ত।
স্ন্যালেক্স

1
আপনি যদি অন্য কোনও উত্তর না পেয়ে থাকেন তবে আমি মনে করি আপনার নিজের প্রশ্নের উত্তর হিসাবে আপনার সম্পাদনাগুলি পোস্ট করা ভাল ধারণা। আমি নিশ্চিত না যে কীভাবে অনুগ্রহের সাথে ইন্টারঅ্যাক্ট করে!
lmjohns3

1
@ স্নালাক্স: আপনি যদি উত্তর হিসাবে নিজের অনুসন্ধানগুলি পোস্ট করেন তবে আমি আপনাকে অনুগ্রহ প্রদান করব। যদিও পরবর্তী 12 ঘন্টার মধ্যে করা দরকার।
জানু

উত্তর:


6

1 ম পদ্ধতি:

এই টিউটোরিয়াল অনুসারে ওপেনসিভির হার্ট্রেইনিং পদ্ধতিগুলি ব্যবহার করুন http://note.sonots.com/SciSoftware/haartraining.html - এটি সর্বোত্তম ফলাফল দেওয়া উচিত, তবে আমি এখন পর্যন্ত নিজেকে হার্ট্রেইনিংয়ের সাথে কাজ করি নি ...

২ য় পন্থা:

আমি বোর্ডের স্বতন্ত্র টাইলগুলির "মার্কারলেস ট্র্যাকিং" এর পদ্ধতিগুলি ব্যবহার করার পরামর্শ দেব। আপনি ওপেনসিভি ব্যবহার করে এটি বাস্তবায়ন করতে পারেন ..

প্রস্তুতি

  1. এই উদ্দেশ্যে আপনার প্রতিটি ধরণের টাইলের কিছু ফটো দরকার। ছবির মাঝখানে শীর্ষে-ডাউন-ভিউ টাইল থেকে একটি সমজাতীয় পটভূমি সহ, সমস্ত টাইলের ধরণের (প্রতিটি এক এক হিসাবে চিত্রের) একটি ছবি তুলুন।

  2. তারপরে কিছু ফিচার ডিটেক্টর ব্যবহার করুন (ওপেনসিভিতে এর জন্য একাধিক অ্যালগরিদম রয়েছে, তবে এসআইএফটি / এসআরএফ-মুক্ত-অ্যালগোরিদম; আমি চিত্রগুলিতে স্বতন্ত্র পয়েন্টগুলি সন্ধান করতে "দ্রুত" ব্যবহার করার পরামর্শ দেব)।

  3. চিত্রটিতে পাওয়া বৈশিষ্ট্যটি বর্ণনা করতে একটি বৈশিষ্ট্য বর্ণনাকারী ব্যবহার করুন (যেমন "BRIEF" ব্যবহার করুন)

সনাক্তকরণ

এখন আপনি এই চিত্রটিতে একই বৈশিষ্ট্য সনাক্তকারী / বর্ণনাকারী অ্যালগরিদম প্রয়োগ করে কোনও চিত্রের টাইলগুলি সনাক্ত করতে পারেন। আপনি যখন বৈশিষ্ট্য / বর্ণনাকারী অর্জন করেছেন তখন আপনি টাইলগুলি সন্ধান করতে ফ্ল্যানব্যাসড ম্যাচার প্রয়োগ করতে পারেন।

এখানে একটি কোড উদাহরণ / OpenCV থেকে টিউটোরিয়াল দেওয়া হল: http://docs.opencv.org/doc/tutorials/features2d/feature_homography/feature_homography.html#feature-homography

মন্তব্য

ম্যাচার পদ্ধতিটি আপনাকে কেবল একটি ম্যাচ দেবে এবং বোর্ডে এই ধরণের একাধিক টাইল পাওয়া গেলে সম্ভবত সমস্যা হবে have আপনি কেবল ইনপুট চিত্রের কিছু অংশকেই মুখোশ দিয়ে সেই সমস্যাটি সমাধান করতে পারেন। আমি সনাক্ত করা বৈশিষ্ট্যগুলির পিক্সেল স্থানাঙ্কগুলি ব্যবহার করে এটি করার পরামর্শ দিই। আপনি যদি - কোনওভাবে - প্রথমে টাইলগুলির বাহ্যরেখা এবং আকার সনাক্ত করেন তবে আপনি ছবিতে টাইলের অবস্থান এবং আকার সম্পর্কে মোটামুটি অনুমান করতে পারেন। মেলানোর আগে আপনার সনাক্ত করা বৈশিষ্ট্য-তালিকা (উদাহরণস্বরূপ টাইলের প্রত্যাশিত মিডপয়েন্ট থেকে এক্স-পিক্সেল ব্যাসার্ধের মধ্যে থাকা বৈশিষ্ট্যগুলি) ফিল্টার করুন এবং তারপরে সবচেয়ে শক্তিশালী ম্যাচটি ব্যবহার করুন। ফলস্বরূপ আপনাকে চিত্রটিতে টাইলের সঠিক অবস্থান দেওয়া হবে (এটির দিকনির্দেশ সহ)। যদি মানচিত্রের বাহ্যরেখা সনাক্ত করা খুব জটিল হয় তবে আপনি কোণার টাইলগুলিতে ব্যবহারকারীকে বাহ্যরেখাটি ম্যানুয়ালি চিহ্নিত করতে "পয়েন্ট" দিতে পারেন ...

বিকল্প পথ বা পন্থা

আপনি এর পদ্ধতিরেখা দ্বারা কোনও টাইল সন্ধান করতেও এই পদ্ধতিটি ব্যবহার করতে পারেন। কোনও টাইলের (ষড়ভুজ) কোনও চিত্র ছাড়াই একটি নমুনা "স্কিম্যাটিক" গ্রেস্কেল ছবি আঁকুন। মনে রাখবেন যে এই চিত্রের "অন্ধকার" এবং "হালকা" অঞ্চলগুলি কেবল কয়েকটি "লাইন" নয়, স্কিম্যাটিকভাবে সঠিক হওয়া দরকার need আপনার সম্ভবত এটি নিয়ে পরীক্ষা করা দরকার। আপনি টাইলের একটি "গড়" চিত্র তৈরি করতে বিভিন্ন টাইলের একাধিক ফটোগ্রাফ গড়ার চেষ্টা করতে পারেন। কোণগুলি একই অবস্থানে রয়েছে তা নিশ্চিত করুন (সেই অনুযায়ী চিত্রগুলি সরান / স্কেল করুন) শেষ হয়ে গেলে ছবিটি তীক্ষ্ণ করুন (পরিষ্কার কোণগুলি / প্রান্তগুলি দৃশ্যমান হওয়া উচিত) এবং প্রয়োজনের সাথে বিপরীতে কিছুটা সামঞ্জস্য করুন।


আপনার পরামর্শ @ স্টেফ্যানক এর জন্য ধন্যবাদ। গেমিংয়ের টুকরা (ঘরগুলি) টাইলসে পড়ে থাকলে প্রথম এবং দ্বিতীয় পদ্ধতিটি এখনও কাজ করে থাকলে আমি কিছুটা চিন্তিত। আপনার বিকল্প পদ্ধতির প্রতিশ্রুতিবদ্ধ দেখায়, আমি এটি চেষ্টা করব (সম্ভবত কিছুটা প্রিপ্রোসেসিংয়ের পরে)।
স্ন্যালেক্স

বাইরের রেখাগুলি সনাক্তকরণ বেশিরভাগ ক্ষেত্রেই সম্ভব বলে মনে হচ্ছে। আমি সম্প্রতি চেষ্টা করেছি যে আমার প্রশ্নের চূড়ান্ত ফলাফলের মতো চিত্রগুলিতে হফ ট্রান্সফম দিয়ে। স্থিতিশীল সমাধান পেলে আমি আমার প্রশ্ন আপডেট করব update
স্ন্যালেক্স

টাইলসগুলিতে বাড়ি এবং অন্যান্য গেমের টুকরোগুলি কোনও সমস্যা হওয়া উচিত নয়। এর ফলে কিছু "বৈশিষ্ট্য" আচ্ছাদিত হয়, তবে সেগুলির কিছু এখনও সনাক্ত করা হবে। কমপক্ষে 4 টি সনাক্তযোগ্য হওয়া দরকার। আপনি ওপেনসিভি-র বৈশিষ্ট্য সনাক্তকরণ গণের চেষ্টা করতে পারেন এবং প্রতিটি টাইলের মধ্যে কতগুলি বৈশিষ্ট্য সনাক্ত করা যায় তা দেখতে পারেন ...
এসডিওয়ার্ফস

3

আমি আমার বর্তমান পদ্ধতির বর্ণনা করব যা গেমের নিয়ম, চিত্র প্রক্রিয়াকরণ এবং বৈশিষ্ট্য সনাক্তকরণের সমন্বয় an

প্রাসঙ্গিক গেম বিধি

সাধনা

প্রথমে আমি গেম বোর্ডের অবস্থান এক্সট্রাক্ট করার জন্য হফ ট্রান্সফর্ম ব্যবহার করি। উত্স চিত্রটি চূড়ান্ত চিত্রের মতো দেখতে দেখতে, তবে আরও ঘন রেখাগুলির সাথে এবং আমি ছোট সীমানা ফিল্টার করেছি। আমি কেবল খুব দীর্ঘ লাইনগুলি সনাক্ত করি (প্রস্থের ক্রম: চিত্রের প্রস্থ / উচ্চতার প্রায় 60 শতাংশ) এবং লাইন মিলের জন্য খুব ছোট থ্রোসোল্ড। আমি কেবল চিত্রের বাইরের 40 শতাংশের রেখাগুলি দেখি এবং উপরে, নীচে, বাম এবং ডানদিকে সনাক্ত করা রেখার মধ্যকটি নিয়ে যাই। ফলাফলটি নীচে ছবিতে দেখানো হয়েছে: শক্ত রূপান্তর

আমার কেবল মোটামুটি পরিমাণ প্রয়োজন, সুতরাং এটি ঠিক আছে। এখন থেকে আমি কেবল হফলাইনগুলির অভ্যন্তরে চিত্রটি পরীক্ষা করি, পাশাপাশি হাফ রূপান্তরের অনিশ্চয়তার কারণে কিছু অতিরিক্ত স্থান।

তারপরে আমি তার উত্তরে স্টিফান কে দ্বারা প্রস্তাবিত বৈশিষ্ট্য শনাক্তকরণটি ব্যবহার করি, চিত্রের বৈশিষ্ট্যগুলি সনাক্ত করতে, যা খেলোয়াড়গণ যেমন দুর্গ, অবস্থানের টাইলস এবং পর্বতগুলি নিতে পারে না। এটি করার জন্য আমি ওপেনসিভি পাইথনে ওআরবি অ্যালগরিদম ব্যবহার করি এবং ব্রুটফোরস-হামিং-ম্যাচার (আমি এখনও ফ্ল্যানব্যাসেড ম্যাচার চালাতে সক্ষম হইনি)। ওআরবি হ'ল স্কেল এবং আবর্তন অদম। একই বৈশিষ্ট্যগুলির একাধিক ঘটনা সনাক্তকরণের জন্য (যেমন দুর্গগুলি) আমি চিত্রগুলিকে বিভিন্ন অংশে বিভক্ত করি, যা ওভারল্যাপ হয়। এটি দীর্ঘস্থায়ী চিত্রের রেজোলিউশন যথেষ্ট বড় হওয়ায় এবং ছবিটি সরাসরি উপরে থেকে নেওয়া হয় (এখনও কিছু টেস্টের প্রয়োজন) fine এটি ধীর ধরণেরও। অবস্থান টাইল সনাক্তকরণ (ট্যাভার) নীচের চিত্রটিতে উদাহরণ হিসাবে দেখানো হয়েছে দুর্গের বৈশিষ্ট্য সনাক্তকরণ

এই মুহুর্তে আমি সনাক্ত করা বৈশিষ্ট্যগুলির সঠিক অবস্থান এবং অভিযোজনগুলি বের করার জন্য হোমোগ্রাফি ট্রান্সফর্মটি অনুসন্ধান করার চেষ্টা করব।

আমি আশা করি এই তথ্য (পর্বত, দুর্গ, অবস্থানের টাইলস এবং বেশিরভাগ ক্ষেত্রে জলের অবস্থান) থেকে গ্রিডটি পুনর্গঠন করতে সক্ষম হব। স্রোত পরীক্ষাগুলি আশাব্যঞ্জক দেখাচ্ছে, যদিও প্রচুর সূক্ষ্ম সুরকরণ এবং বৈশিষ্ট্য চিত্রগুলির যথাযথ প্রস্তুতি করতে হবে।


আমি ক্যাটানের সাথে একই রকম কিছু করেছি তবে হোমোগ্রাফির পরিবর্তে আমি কোনও প্রদত্ত টাইলের জন্য গড় রঙের মানটি ব্যবহার করছি। প্রান্তটি আলাদা করতে সহায়তা করার জন্য প্রাক-প্রসেসিংয়ের সাথে টাইলটিকে 6-মুখযুক্ত পলি কনট্যুর হিসাবে চিহ্নিত করুন, তারপরে সেই আরওআইকে একটি মাস্কে রূপান্তর করুন, তারপরে উত্স চিত্রের উপরে বিটওয়াইস_আন্ড দিয়ে মাস্কটি প্রয়োগ করুন। তারপরে আপনি গড় রঙ পেতে পারেন যা বেশিরভাগ টাইল সনাক্ত করতে যথেষ্ট হতে পারে এবং তারপরে আপনি অতিরিক্ত প্যাটার্ন মেলাতে পারেন। আমি সবেমাত্র এটি শুরু করেছি: youtube.com/watch?v=0ezfyWkio6c
রেক্স হার্ডিন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.