image - How to detect a point above and below a region? -
मुझे यह चित्र है:
जहां लाल डॉट्स निर्देशांक हैं जो इस अरबी शब्द खंड के विभिन्न अक्षरों को विभाजित करते हैं।
मैं चाहता हूं डॉट्स के बीच के क्षेत्रों के ऊपर या नीचे डॉट्स का पता लगाता है।
डॉट्स (बाएं से दाएं) = मुझे क्या करना है, मान लीजिए कि किसी बिंदु को एक समन्वय के ऊपर मिला है, तो उस समन्वय को हटा दिया जाना चाहिए। क्या इन्हें Matlab में पता लगाना संभव है? संपादित करें: यहां मूल छवि है पहली छवि सिर्फ एक फसल है जो मेरे क्षेत्र में रुचि दिखाती है आप केवल उन बिंदुओं का चयन करें जिनके पास एक क्षेत्र बड़ा हो, जो 10 से कम है, लेकिन 100 से कम: मिल गया बिंदुओं को मॉनिटर करें: परिणाम: आप फिर से कुछ के साथ अंक सॉर्ट कर सकते हैं: यहां से, आपकी समस्या को हल करने के कई तरीके हैं, एक विकल्प निम्न है: परिणाम वैक्टर * < कोड> ढूंढें उन लोगों के साथ एक तार्किक सरणी देता है जहां की स्थिति मिलती है [81,183; 80,217; 83,275; 83,314] < P> अब
[81,183] और
[80,217] के बीच का अक्षर ऊपर एक बिंदु है। इसी तरह से
[80,217] और
[83,275] और क्षेत्र के नीचे डॉट्स
[83,275] और
[83,314] < / कोड>।
regionprops के साथ अलग-अलग ऑब्जेक्ट के निर्देशांक निकाल सकते हैं यहां एक उदाहरण कार्यान्वयन है:
im = rgb2gray (imread (' http://i.stack.imgur.com/jic1X.jpg ')); पी = क्षेत्रप्रॉपॉप्स (~ im2bw (im), 'all'); क्षेत्रों = cell2mat ({P.Area}); Centroids = cell2mat ({} P.Centroid ');
Coord = Centroids (क्षेत्र & amp;;; 100 & amp; क्षेत्र & gt; 10 , :);
imshow (im); कश्मीर = 1 के लिए पकड़ो: लंबाई (कोऑर्ड) प्लॉट (कोऑर्ड (कश्मीर, 1), कोऑर्ड (कश्मीर, 2), 'आरओ'); अंत पर रखें
Aboves = Coord (Coord (:, 2) & lt; 80, :); Belows = Coord (Coord (:, 2) & gt; 80, :);
डॉट्स = [81,183; 80,217; 83,275; 83,314] ; DetectDots = शून्य (लंबाई (बिंदु) -1, 1); % = 'के लिए' डॉट्स 'में तत्वों के बीच अंतराल के बराबर शून्य के एक वेक्टर बनाना: आकार (बिंदु, 1) -1 यदि ~ isempty (ढूंढें ((अधिग्रहण (,, 1) & gt; बिंदु (कश्मीर, 2 ) & Amp; Aboves (:, 1) & lt; बिंदु (कश्मीर + 1,2)))% * DetectDots (k) = 1; (= (1,)) और डॉट्स (के, 2) & amp; Belows (:, 1) & lt; डॉट्स (कश्मीर + 1,2)))) Detects (k) = - 1; और डिटेक्ट डॉट्स (के) = 0; अंत का अंत
[1,1, -1] के साथ एक वेक्टर
DetectDots है जो इस स्थिति में इंगित करता है कि वहां दो प्रथम बिंदु के बीच, और दूसरे और तीसरे बिंदु के बीच, और वेक्टर
डॉट्स के तीसरे और अंतिम बिंदु के बीच नीचे डॉट्स के बीच डॉट्स हैं।
खोजी जांचता है कि यदि
खोज के आउटपुट में कम से कम एक तत्व है नतीजतन, स्थिति एक है अगर सरणी में कम से कम एक तत्व होता है
एवरव्स या
Belows जो मापदंड से मिलता है।
~ तार्किक नहीं है, इसलिए
~ = मतलब बराबर नहीं है
& amp; तार्किक और यह भी ध्यान रखें कि छवियों और एरे के बीच निर्देशांक को मैटलैब में उल्टे किया जाता है।
Comments
Post a Comment