How can I find local maxima in an image in MATLAB? -
मेरे पास MATLAB में एक इमेज है:
y = rgb2gray (imread ('some_image_file। जेपीजी '));
और मैं उस पर कुछ प्रोसेसिंग करना चाहता हूं:
pic = some_processing (y);
और आउटपुट के स्थानीय मैक्सिमा को ढूंढें। यही है, y
में सभी बिंदुएं जो अपने सभी पड़ोसियों के मुकाबले अधिक हैं।
मुझे ऐसा करने के लिए MATLAB फ़ंक्शन को नहीं मिल सकता है। सबसे अच्छा मैं इसके साथ आ सकता हूं:
<पूर्व> [dim_y, dim_x] = आकार (चित्र); enlarged_pic = [शून्य (1, dim_x +2); शून्य (dim_y, 1), पिक, शून्य (dim_y, 1); शून्य (1, dim_x +2)]; % अब एक 3D सरणी का निर्माण प्रत्येक विमान बढ़े हुए चित्र% ऊपर, नीचे, बाएं या दाएं,% सभी विकर्णों में, या नहीं [en_dim_y, en_dim_x] = आकार (enlarged_pic) में होगा; three_d (:,:, 1) = enlarged_pic; three_d (:,:, 2) = [enlarged_pic (2: अंत, :); शून्य (1, en_dim_x)]; three_d (:,:, 3) = [शून्य (1, en_dim_x); enlarged_pic (1: अंत -1, :)]; three_d (:,:, 4) = [शून्य (en_dim_y, 1), enlarged_pic (:, 1: अंत 1)]; three_d (:,:, 5) = [enlarged_pic (:, 2: अंत), शून्य (en_dim_y, 1)]; three_d (:,:, 6) = [pic, शून्य (dim_y, 2); शून्य (2, en_dim_x)]; three_d (:,:, 7) = [शून्य (2, en_dim_x); पिक, शून्य (dim_y, 2)]; three_d (:,:, 8) = [शून्य (dim_y, 2), पिक, शून्य (2, en_dim_x)]; three_d (:,:, 9) = [शून्य (2, en_dim_x); शून्य (dim_y, 2), पिक];
और फिर देखें कि क्या तीसरा आयाम के साथ सबसे पहले 1 परत (यानी: तीन_d (:,:, 1)
) में दिखाई देता है:
(अधिकतम_वल, अधिकतम_आई) = अधिकतम (तीन_द, 3); परिणाम = खोज (max_i == 1);
क्या ऐसा करने के लिए कोई और अधिक सुरुचिपूर्ण तरीका है? यह एक कुप्पी की तरह लगता है।
bw = pic & gt; असंतुलित (चित्र, [1 1 1; 1 0 1; 1 1 1]);
Comments
Post a Comment