खोज…


मूल छवि I / O

>> img = imread('football.jpg');

MATLAB में एक मैट्रिक्स में छवि फ़ाइलों को पढ़ने के लिए imread का उपयोग करें।
एक बार जब आप एक छवि को imread , तो इसे मेमोरी में ND-array के रूप में संग्रहीत किया जाता है:

>> size(img)
ans =
 256   320     3

'football.jpg' जेपीजी की छवि में 256 पंक्तियाँ और 320 स्तंभ हैं और इसमें 3 रंग चैनल हैं: लाल, हरा और नीला।

अब आप इसे मिरर कर सकते हैं:

>> mirrored = img(:, end:-1:1, :);  %// like mirroring any ND-array in Matlab

और अंत में, इसे एक छवि के रूप में वापस imwrite का उपयोग imwrite :

>> imwrite(mirrored, 'mirrored_football.jpg');

इंटरनेट से चित्र प्राप्त करें

जब तक आपके पास इंटरनेट कनेक्शन है, आप हाइपरलिंक से चित्र पढ़ सकते हैं

I=imread('https://cdn.sstatic.net/Sites/stackoverflow/company/img/logos/so/so-logo.png');

एक 2 डी एफएफटी का उपयोग करके छानना

जैसे 1 डी सिग्नल के लिए, फूरियर रूपांतरण लागू करके छवियों को फ़िल्टर करना संभव है, आवृत्ति डोमेन में एक फिल्टर के साथ गुणा करना और वापस अंतरिक्ष डोमेन में बदलना। यहाँ आप Matlab के साथ एक छवि के लिए उच्च या निम्न-पास फ़िल्टर कैसे लागू कर सकते हैं:

image को मूल, अनफ़िल्टर्ड छवि होने दें, यहां इसकी 2D FFT की गणना कैसे की जाए:

ft = fftshift(fft2(image));

अब स्पेक्ट्रम के एक हिस्से को बाहर करने के लिए, एक को अपने पिक्सेल मानों को 0 पर सेट करने की आवश्यकता है। मूल छवि में निहित स्थानिक आवृत्ति को केंद्र से किनारों ( fftshift का उपयोग करने के बाद) में मैप किया जाता है। कम आवृत्तियों को बाहर करने के लिए, हम केंद्रीय परिपत्र क्षेत्र को 0 पर सेट करेंगे।

यहां अंतर्निहित फ़ंक्शन का उपयोग करके त्रिज्या D साथ डिस्क के आकार का बाइनरी मास्क उत्पन्न करने का तरीका बताया गया है:

[x y ~] = size(ft);
D = 20;
mask = fspecial('disk', D) == 0;
mask = imresize(padarray(mask, [floor((x/2)-D) floor((y/2)-D)], 1, 'both'), [x y]);

आवृत्ति डोमेन छवि को मास्किंग एफएफटी बिंदु-वार को ऊपर प्राप्त बाइनरी मास्क के साथ गुणा करके किया जा सकता है:

masked_ft = ft .* mask;

अब, व्युत्क्रम FFT की गणना करें:

filtered_image = ifft2(ifftshift(masked_ft), 'symmetric');

एक छवि में उच्च आवृत्तियाँ तेज धार हैं, इसलिए इस उच्च-पास फिल्टर का उपयोग छवियों को तेज करने के लिए किया जा सकता है।

छवि फ़िल्टरिंग

मान लीजिए कि आपके पास एक छवि rgbImg , उदाहरण के लिए, imread का उपयोग करके imread

>> rgbImg = imread('pears.png');
>> figure, imshow(rgbImg), title('Original Image')

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

2D फ़िल्टर बनाने के लिए fspecial का उपयोग करें:

>> h = fspecial('disk', 7);
>> figure, imshow(h, []), title('Filter')

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

छवि पर फ़िल्टर लागू करने के लिए imfilter का उपयोग करें:

>> filteredRgbImg = imfilter(rgbImg, h);
>> figure, imshow(filteredRgbImg), title('Filtered Image')

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

जुड़े हुए क्षेत्रों के मापने के गुण

एक द्विआधारी छवि के साथ शुरू, bwImg , जिसमें कई जुड़े ऑब्जेक्ट हैं।

>> bwImg = imread('blobs.png');
>> figure, imshow(bwImg), title('Binary Image')

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

छवि में प्रत्येक वस्तु के गुणों (जैसे, क्षेत्र, केन्द्रक, आदि) को मापने के लिए, regionprops उपयोग करें:

>> stats = regionprops(bwImg, 'Area', 'Centroid');

stats एक संरचना सरणी है जिसमें छवि में प्रत्येक वस्तु के लिए एक संरचना होती है। किसी वस्तु के मापा गुण तक पहुंचना सरल है। उदाहरण के लिए, पहली वस्तु के क्षेत्र को प्रदर्शित करने के लिए, बस,

>> stats(1).Area

ans =

    35

उन्हें मूल छवि पर ओवरले करके ऑब्जेक्ट सेंट्रोइड की कल्पना करें।

>> figure, imshow(bwImg), title('Binary Image With Centroids Overlaid')
>> hold on
>> for i = 1:size(stats)
scatter(stats(i).Centroid(1), stats(i).Centroid(2), 'filled');
end

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



Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow