चौड़ाई में एन ब्लॉक में एक छवि बांटना और प्रत्येक ब्लॉक Matlab के किनारे के अंक की गणना



रिपोर्ट एंड ब्लॉक मीन्स इन हिंदी (1)

अगर मैं आपके प्रश्न को सही ढंग से समझता हूं, तो आप N ब्लॉक में बढ़त की पहचान वाली छवि को सिकोड़ना चाहते हैं, जहां प्रत्येक ब्लॉक की ऊंचाई छवि की ऊंचाई है, जबकि प्रत्येक ब्लॉक की चौड़ाई की गणना होती है जैसे कि यह चौड़ाई m , जहां N*m = width of image इसलिए, प्रत्येक ब्लॉक की चौड़ाई width of image / N की चौड़ाई है ध्यान रखें कि आपको N मान चुनना होगा जैसे कि यह आपकी छवि की चौड़ाई से समान रूप से विभाजित हो। आपकी छवि में 460 कॉलम हैं, और इसलिए हम ऐसे किसी भी संख्या का चयन कर सकते हैं जो 10 से विभाज्य हो, उदाहरण के लिए .... तो चलिए कुछ 10 ब्लॉकों की तरह चुन लें।

अपनी छवि को विघटित करने का सबसे आसान तरीका mat2cell का उपयोग करना होगा। यह 2 डी मैट्रिक्स और मैट्रिक्स को टुकड़ों में विभाजित करता है। प्रत्येक टुकड़ा एक सेल सरणी में एक व्यक्तिगत तत्व में संग्रहीत किया जाएगा। इसलिए, आप यह सुनिश्चित करना चाहते हैं कि प्रत्येक ब्लॉक की ऊंचाई एक समान है, और प्रत्येक ब्लॉक की चौड़ाई उस सूत्र का उपयोग कर रही है जो मैंने आपको ऊपर दी थी। इसलिए, आपको बस ऐसा करने की आवश्यकता है। मैं आपकी उदाहरण छवि पढ़ रहा हूं जो आपने सीधे स्टैक ओवरफ्लो से पोस्ट की थी, लेकिन छवि वास्तव में आरजीबी के रूप में अपलोड की गई थी। मैंने इसे बाइनरी में सीधे रूपांतरित कर दिया ताकि हम वास्तविक किनारे का नक्शा प्राप्त कर सकें:

N = 10; %// Declare total number of blocks
im = im2bw(imread('http://i.stack.imgur.com/ZvfoL.png')); %// Read in image
C = mat2cell(im, size(im,1), (size(im,2)/N)*ones(N,1));

C में आपकी छवि ब्लॉकों होंगे, जहां C{idx} आपको इंडेक्स idx पर स्थित इमेज ब्लॉक मिलेगा। यदि आप इसे एक 3D सरणी में बनाना चाहते हैं, जहां प्रत्येक स्लाइस आपको इच्छित छवि ब्लॉक देता है, बस cat उपयोग करें और तीसरे आयाम में समानताएं जोड़ें:

C_matrix = cat(3, C{:});

इसलिए, idx पर ब्लॉक तक पहुंचने के लिए, बस C_matrix(:,:,idx)

दृश्य प्रतिनिधित्व के रूप में, आइए प्रत्येक ब्लॉक को एक आकृति में प्रदर्शित करें:

figure;
hold on;
for idx = 1 : N
    subplot(1,N,idx);
    imshow(C{idx}); %// Or imshow(C_matrix(:,:,idx));
end

मुझे यही मिलता है:

असल में, प्रत्येक ब्लॉक को खिड़की के भीतर एक अलग आकृति में रखा जाता है, यही वजह है कि मैं subplot का उपयोग कर रहा हूं। आप देख सकते हैं कि ब्लॉकों के बीच में एक सफेद अंतर है, जो आपकी छवि के भीतर प्रत्येक अलग ब्लॉक को ठीक से दिखाता है।

सौभाग्य!

हैलो सभी को मैं अपने किनारों के अंक प्राप्त करने के लिए इस कोड को चलाने के बाद एक चौड़ाई में एक छवि को अलग-अलग खंडों में विभाजित करने की कोशिश कर रहा था:

Ioriginal = imread('sample.jpg') %read the image
Igray = rgb2gray(Ioriginal) %change it to gray scale
InoNoise = wiener2(Igray)  %remove noise from image
image = edge(InoNoise, 'prewitt') %get the edge points of the image

परिणाम इस तस्वीर में दिखाया गया है:

अब मैं क्या करना चाहता हूँ, चौड़ाई में एन बराबर ब्लॉकों में छवि को विभाजित कर रहा है और प्रत्येक ब्लॉक के किनारों की गणना करता है

विभाजन के बाद, छवि को इस तरह विभाजित किया जाना चाहिए:

मैं वास्तव में इसकी सराहना करता हूं अगर कोई वास्तव में मुझे इस भाग को करने में मदद कर सकता है

धन्यवाद





image-processing