image - How to detect a point above and below a region? -


मुझे यह चित्र है:

 यहाँ छवि विवरण दर्ज करें

जहां लाल डॉट्स निर्देशांक हैं जो इस अरबी शब्द खंड के विभिन्न अक्षरों को विभाजित करते हैं।

मैं चाहता हूं डॉट्स के बीच के क्षेत्रों के ऊपर या नीचे डॉट्स का पता लगाता है।

डॉट्स (बाएं से दाएं) = [81,183; 80,217; 83,275; 83,314] < P> अब [81,183] और [80,217] के बीच का अक्षर ऊपर एक बिंदु है। इसी तरह से [80,217] और [83,275] और क्षेत्र के नीचे डॉट्स [83,275] और [83,314] < / कोड>।

मुझे क्या करना है, मान लीजिए कि किसी बिंदु को एक समन्वय के ऊपर मिला है, तो उस समन्वय को हटा दिया जाना चाहिए। क्या इन्हें Matlab में पता लगाना संभव है?

संपादित करें: यहां मूल छवि है

 यहां छवि विवरण दर्ज करें

पहली छवि सिर्फ एक फसल है जो मेरे क्षेत्र में रुचि दिखाती है

आप regionprops के साथ अलग-अलग ऑब्जेक्ट के निर्देशांक निकाल सकते हैं यहां एक उदाहरण कार्यान्वयन है:

  im = rgb2gray (imread (' http://i.stack.imgur.com/jic1X.jpg ')); पी = क्षेत्रप्रॉपॉप्स (~ im2bw (im), 'all'); क्षेत्रों = cell2mat ({P.Area}); Centroids = cell2mat ({} P.Centroid ');   

केवल उन बिंदुओं का चयन करें जिनके पास एक क्षेत्र बड़ा हो, जो 10 से कम है, लेकिन 100 से कम:

  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

Popular posts from this blog

Verilog Error: output or inout port "Q" must be connected to a structural net expression -

jasper reports - How to center align barcode using jasperreports and barcode4j -

c# - ASP.NET MVC - Attaching an entity of type 'MODELNAME' failed because another entity of the same type already has the same primary key value -