स्पाइकी चयन के लिए इमेज प्रोसेसिंग विधि


11

मेरे पास 3D बाइनरी इमेज और नीचे दिए गए पसंदीदा आउटपुट के रूप में एक इनपुट है :

इनपुट:

इनपुट

पसंदीदा आउटपुट:

आउटपुट

अगर मैं केवल नुकीली वस्तु (वस्तुएं) ही रखूं, तो ऊपर दिए गए पसंदीदा आउटपुट की तरह क्या छवि प्रसंस्करण के तरीके देखने चाहिए?


3 डी बाइनरी इमेज से आपका क्या मतलब है ? क्या आप छवि को अलग-अलग हिस्सों में आसानी से विभाजित कर सकते हैं?
बज़ेर्नज़

3 डी से मेरा मतलब है कि यह एक टोमोग्राफिक इमेज है।
कार्ल

1
क्या आप बता सकते हैं कि spikyवस्तु क्या है ? क्या वास्तव में इसे डरावना कहते हैं? नुकीली वस्तुओं को स्पॉट करने के लिए मुख्य विशेषताएं क्या हैं?
दीपन मेहता

इस मामले में एक नुकीली वस्तु एक 3 डी क्षेत्र है जो चिकनी नहीं है और इन कांटों की आकृति उन पर है।
कार्ल

जवाबों:


19

आपकी "स्पाइकी ऑब्जेक्ट" की सीमाओं पर अधिक कोने हैं, इसलिए एक दृष्टिकोण इसके लिए एक कोने डिटेक्टर को ट्यून करना होगा ।

उदाहरण के लिए, मैंने एक दूरी-परिवर्तित छवि के संरचना टेंसर (नीचे गणित विषय) के निर्धारक की गणना की:

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

हिस्टैरिसीस के साथ Binarizing इस छवि को उत्पन्न करता है, जो आपकी पसंद के विभाजन एल्गोरिथ्म के लिए एक अच्छा प्रारंभिक बिंदु होना चाहिए:

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

Mathematica कोड ( srcआपके द्वारा पोस्ट की गई स्रोत छवि है)

सबसे पहले, मैं इनपुट छवि के एक दूरी परिवर्तन की गणना करता हूं। यह पूरे ऑब्जेक्ट क्षेत्र (केवल सीमा के बजाय) पर विरोधाभास बनाता है, इसलिए पूरे ऑब्जेक्ट का पता लगाया जा सकता है।

dist = ImageData[DistanceTransform[src]];

अगला मैं संरचना के घटकों को दसियों तैयार करता हूं । गाऊसी डेरिवेटिव के लिए फ़िल्टर आकार यदि 5, खिड़की का आकार 20 है।

gx = GaussianFilter[dist, 5, {1, 0}];
gy = GaussianFilter[dist, 5, {0, 1}];
gx2 = GaussianFilter[gx^2, 20];
gxy = GaussianFilter[gx*gy, 20];
gy2 = GaussianFilter[gy^2, 20];   

प्रत्येक पिक्सेल पर कोने के फिल्टर की गणना करने के लिए, मैं बस इन्हें संरचना के सांकेतिक निर्धारक में प्लग करता हूं:

corners = Det[{{dx2, dxy}, {dxy, dy2}}] /. {dx2 -> gx2, dxy -> gxy, dy2 -> gy2};

जो मूल रूप से समान है:

corners = gx2 * gy2 - gxy * gxy;

इसे एक छवि में बदलने और इसे 0..1 सीमा तक स्केल करने से ऊपर के कोने डिटेक्टर छवि मिलती है।

अंत में, दाहिनी दहलीज के साथ इसे द्विअर्थी करने से अंतिम, द्विआधारी छवि मिलती है:

MorphologicalBinarize[Image[corners], {0.025, 0.1}]

बहुत अच्छा जवाब! =)
फ़ोनॉन

आपके उत्तर आश्चर्यजनक हैं, मैं उनसे बहुत कुछ सीखता हूं।
एंड्रे रुबेश्टिन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.