matlab - Apply a gaussian distribution in a specific part of an image -
मेरे पास निम्न चित्र और एक संबंधित मुखौटा है।
मैं गाऊसी, g = @ (x, y, xc, yc) exp (- ((x-xc) के साथ सफेद सर्कल के अंदर पिक्सल को वज़न करना चाहूंगा ^ 2) /0.5 + ((y-yc) ^ 2) /0.5));
, (xc, yc)
में रखा मुखौटा। x
, y
संबंधित पिक्सेल के निर्देशांक हैं क्या आप कृपया किसी को ऐसा करने का सुझाव दे सकते हैं कि
धन्यवाद।
अंडाकार के अंदर "भारित" पिक्सल से, मैं मानता हूँ कि आप 2 डी गाऊसी द्वारा तत्वों को गुणा करते हैं यदि हां, तो यहां कोड है:
% छवियाँ पढ़ें img = imread ('img.jpg'); Img = im2double (rgb2gray (img)); मास्क = इमेड ('मुखौटा। जेपीजी'); मास्क = im2double (rgb2gray (मुखौटा)) & gt; 0.9; % JPG संपीड़न के परिणामस्वरूप कुछ शोर% गाऊसी फ़ंक्शन जी = @ (एक्स, वाई, एक्ससी, यासी) एक्सपी (- (((x-xc)। ^ 2) / 500 + ((y-yc)। ^ 2)। / 200)); % को मापदंडों के रूप में रूपांतरित करने के लिए संशोधित किया जाना चाहिए% centroid और मुखौटा rp_mask = regionprops (मास्क, 'Centroid', 'BoundingBox', 'Image') प्राप्त करने के लिए आरपी का उपयोग करें; % फॉर्म निर्देशक centroid = round (rp_mask.Centroid); [समन्वय x coord_y] = मेषग्रिड (सीटीआईएल (आरपी_मास्क। बाउंडिंग बॉक्स (1)): सीट (आरपी_मास्क। बाउंडिंग बॉक्स (1)) + आरपी_मास्क। बाउंडिंग बॉक्स (3) -1, ... सीट (आरपी_मास्क। बाउंडिंग बॉक्स (2)): छत (rp_mask.BoundingBox (2)) + rp_mask.BoundingBox (4) -1); % गाऊसी मास्क gaussian_mask = g प्राप्त करें (coord_x, coord_y, centroid (1), centroid (2)); Gaussian_mask (~ rp_mask.image) = 1; % आरओआई के बाहर 1 के मान सेट करें, यह ROI% के बावजूद भार घटाता है गाऊसी को लागू करें - यह छोटा करने के लिए temp चर का उपयोग कर सकते हैं img_g = img; आईएमजी_जी (सीटीआईएल (आरपी_मास्क। बाउंडिंग बॉक्स (2)): सीआईएल (आरपी_मास्क। बाउंडिंग बॉक्स (2)) + आरपी_मास्क। बाउंडिंग बॉक्स (4) -1, ... सीआईआईएल (आरपी_मास्क। बाउंडिंग बॉक्स (1)): छत (आरपी_मास्क। बाउंडिंग बॉक्स 1)) + आरपी_मास्क। बाउंडिंगबॉक्स (3) -1) = ... आईएमजी (सीटीआईएल (आरपी_मास्क। बाउंडिंग बॉक्स (2)): सीआईएल (आरपी_मास्क। बाउंडिंग बॉक्स (2)) + आरपी_मास्क। बाउंडिंग बॉक्स (4) -1, .. सीट (आरपी_मास्क। बाउंडिंग बॉक्स (1)): सीआईएल (आरपी_मास्क। बाउंडिंगबॉक्स (1)) + आरपी_मास्क। बाउंडिंग बॉक्स (3) -1)। * गाऊसी; % आंकड़ा दिखाएँ, imshow (img_g, []);
परिणाम:
यदि आप उस roi के भीतर कुछ फ़िल्टरिंग करना चाहते हैं, तो roifilt2
नामक फ़ंक्शन है जो आपको उस क्षेत्र के भीतर भी छवि को फ़िल्टर करने की अनुमति देगा:
img_filt = roifilt2 (fspecial ('गाऊसी', [21 21], 10), आईएमजी, मास्क); आंकड़ा, इम्शोव (आईएमजी_फिल्ल्ट, []);
परिणाम:
Comments
Post a Comment