2017-05-14 9 views
5

जैसा कि आप जानते हैं कि मैं छवियों पर काम कर रहा हूं, इस समय मुझे निम्नलिखित समस्या का सामना करना पड़ रहा है, मुझे नहीं पता कि मैंने जो छवि संलग्न की है उस रेखा के व्यास को मापने के लिए, मैं थोड़ा प्रमेय लागू कर सकता हूं पाइथागोरस का, लेकिन मुझे नहीं पता कि छवि में ऐसा करना संभव है, उदाहरण के लिए इस मामले में छवि की मोटी रेखा है, लेकिन यदि लाइन पतली हो सकती है तो क्या किया जा सकता है?किसी छवि में रेखा का व्यास कैसे प्राप्त करें?

Example image

मैं व्यास पता करने के लिए जब लाइन, अकेले है, क्योंकि यह स्पष्ट है कि है जब वहाँ एक क्रॉस व्यास बदल जाएगा, मैं इसे अगले छवि में दिखाने के लिए चाहते हैं।

लाइन पर एक भी बिंदु पर

जहां मोटाई आप 2 चीजों में से एक कर सकते हैं अनुमान लगाने के लिए चाहते हैं:

diameter

+1

आप वास्तव में वास्तव में चौराहों खोजने की कोशिश कर रहे हैं:

img = imread('qGs5t.png'); % Load RGB image bw = ~im2bw(img); % Convert to black and white and invert bw = imclose(bw, strel('disk', 3)); % Morphological close to remove noise distImage = bwdist(~bw); % Distance transform maxDist = double(max(distImage(:))); % Find maximum distance measure diamImage = 2.*bw.*imdilate(distImage, strel('disk', floor(maxDist))); % Dilate and mask imagesc(diamImage); % Display image colorbar; % Display color bar dcmObj = datacursormode(gcf); % Create data cursor object... set(dcmObj, 'Enable', 'on'); % ... and enable to select points 

और यहाँ चयनित एक बिंदु के साथ छवि है ("सूचकांक" मूल्य अनुमानित व्यास है)? शायद कंकालोनिंग पर विचार करें और लाइन मोटाई में कूदने के बजाए चौराहे की तलाश करें। –

उत्तर

2

यहाँ जब संकल्प और मोटाई "इतना बड़ा" कर रहे हैं के लिए सरल हैक्स हैं :

1) 0 और 180 के बीच हर कोण पर उस बिंदु से एक लाइन बाहर अवधि और लाइन है कि अपने मूल लाइन के साथ कम से कम ओवरलैप में परिणाम मिल जाए, यह मोटाई

2) बाहर अवधि हो जाएगा एकउस बिंदु से सर्कल, जब भी सर्कल लाइन के साथ ओवरलैप नहीं कर रही है, तो इसे पूर्ण ओवरलैप करने के लिए फिर से केंद्रित करें। जब इसे फिर से केंद्रित करना असंभव होता है, तो आपके पास पूर्ण ओवरलैप होता है, फिर व्यास जहां आप अभी भी ओवरलैप करते हैं, लाइन मोटाई का सबसे अच्छा अनुमान

1

लाइन मोटाई का अनुमान प्रदर्शित करने का एक तरीका है लाइन में प्रत्येक बिंदु के लिए निकटतम किनारे की दूरी की गणना करने के लिए bwdist का उपयोग करने के लिए, लाइन की चौड़ाई में अधिकतम मान (लाइन के केंद्र के साथ चलने) को सुचारु बनाने के लिए imdilate का उपयोग करें। इसके बाद आप अपने अनुमानित व्यास को देखने के लिए लाइन पर एक बिंदु चुन सकते हैं (जो व्यास के बीच संक्रमण के करीब थोड़ा सा होगा, जैसे जुड़ने पर)। यहाँ एक उदाहरण है:

enter image description here

+0

लेकिन अगर मैं इसे स्वचालित बनाना चाहता हूं, तो यह लाइनों के व्यास को स्वयं ही निकाल देता है, फिर इसे किसी सूची या हैशैप में सहेजें (जहां यह जानता है कि कौन सी रेखा पहचानकर्ता है और इसकी मोटाई क्या है) – AlexZ

+0

@AlexZ: यदि आप चाहते हैं इसे स्वचालित करने के लिए, आपको यह सुनिश्चित करना होगा कि आप इसे कैसे करना चाहते हैं। क्या आप उन रेखाओं के साथ बिंदु प्रदान करने जा रहे हैं जहां व्यास को मापना है? क्या आप उन बिंदुओं पर लाइनों को तोड़ना चाहते हैं जहां वे शामिल हो गए हैं और प्रत्येक खंड के लिए एक अलग व्यास माप किया गया है? क्या लाइन के व्यास को इसकी लंबाई के साथ अधिकतम या औसत व्यास के रूप में सूचित किया जाना चाहिए? – gnovice

संबंधित मुद्दे

 संबंधित मुद्दे