एक इनपुट छवि के लिए एक विस्तृत फ़िल्टर लागू करें


11

मैंने एक विशिष्ट पैमाने (लैम्ब्डा और सिग्मा के मेरे मूल्यों के अनुसार) के साथ एक गैबर फ़िल्टर लागू करने की कोशिश की, इसलिए यह ( 7x7 ) है और 4 झुकावों के लिए (0, , और ) एक इनपुट ग्रे स्केल छवि के लिए।π4π23π4

मेरे कोड में, तीन चरण प्राप्त होते हैं:

  1. एक विस्तृत फ़िल्टर बनाएं

  2. एक आरजीबी छवि पढ़ें, फिर इसे ग्रे स्केल और फाइनली को डबल में बदलें।

  3. निर्मित छवि को इनपुट छवि पर लागू करें ( यहां, मुझे यकीन नहीं है कि मेरा कोड सही है, इसलिए मुझे आपकी राय की आवश्यकता है )

1) -------------- गैबर फिल्टर (आकार = 7x7 और 4 झुकाव) बनाएं

%define the five parameters
theta=....; %either 0 or pi/4 or pi/2 or 3pi/4
lambda=3.5;
gamma=0.3;
sigma=2.8;
psi=0;

sigma_x = sigma;
sigma_y = sigma/gamma;

nstds = 5;
xmax = max(abs(nstds*sigma_x*cos(theta)),abs(nstds*sigma_y*sin(theta)));
xmax = ceil(max(1,xmax));
ymax = max(abs(nstds*sigma_x*sin(theta)),abs(nstds*sigma_y*cos(theta)));
ymax = ceil(max(1,ymax));
xmin = -xmax; ymin = -ymax;
[x,y] = meshgrid(xmin:xmax,ymin:ymax);

x_theta=x*cos(theta)+y*sin(theta);
y_theta=-x*sin(theta)+y*cos(theta);

gb= exp(-.5*(x_theta.^2/sigma_x^2+y_theta.^2/sigma_y^2)).*cos(2*pi/lambda*x_theta+psi);

figure(2);
imshow(gb);
title('theta=...');
%imagesc(gb);
%colormap(gray);
%title('theta=...');

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

2) ------------ इनपुट छवि पढ़ें

I=imread('piano.jpg');
image_resize=imresize(I, [160,160]);
image_gray=rgb2gray(image_resize);
image_double=im2double(image_gray);
figure(1);
imshow(image_double);

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

3) ----- इनपुट इमेज के लिए गैबोर के ऊपर बना हुआ अप्लाई करें (याद रखें कि मुझे यकीन नहीं है कि इस स्टेप में कोड 100% सच है, इसीलिए अगर आपको सही जवाब चाहिए तो मुझे आपकी राय और आपकी मदद की जरूरत है। )

figure(3);
filtered = conv2(image_double,gb);
imagesc(filtered);
colormap(gray);
title('theta=....');

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


इसके अलावा, यदि आप conv2 का उपयोग कर रहे हैं, तो कृपया इसे 'उसी' विकल्प के साथ उपयोग करें।
टोलगा बर्डल

त्रुटि: फ़ाइल: अभ्यास 1। पीएम लाइन: 3 कॉलम: 7 बराबरी के चिह्न के बाईं ओर का कार्य एक असाइनमेंट के लिए एक वैध लक्ष्य नहीं है। जब मैंने इस कोड को चलाया तो मुझे यह त्रुटि मिली
Engr Rao Zaka

यह फ़िल्टर 7x7 नहीं है
जिग्गंजर

जवाबों:


1

आपका कोड सही है और परिणाम सुसंगत हैं। कुछ 'छिपी हुई विशेषताओं' के कारण आप उनके द्वारा आश्चर्यचकित हो सकते हैं।

सबसे पहले, conv2फुल कनवल्शन को डिफ़ॉल्ट रूप से लौटाता है, जैसे कि रिजल्ट इमेज का साइज प्लस कर्नेल के आधे साइज का बॉर्डर होता है (यानी, इमेज का साइज प्लस कर्नेल का कुल साइज)। जब आप अपने परिणामों की व्याख्या करते हैं, तो इसके बारे में जागरूक रहें!

दूसरा, परिणाम गुणांक का प्रतिनिधित्व करते हैं जो आपके कर्नेल और आपके स्थानीय छवि पैच के बीच उच्च सहसंबंध के लिए मजबूत होते हैं: जैसा कि आप छवि की सीमाओं को भी निकालते हैं। विशेष रूप से देखें कि आपका सबसे ऊपरी भाग मजबूत ऊर्ध्वाधर रेखा दिखा रहा है।

अंतिम, imagescउच्चतम गुणांक के उच्चतम के बीच के पैमाने को डिफ़ॉल्ट रूप से मापता है। यही कारण है कि सबसे बाएं परिणाम में, आप मुख्य रूप से सीमा देखते हैं।

इसमें conv2वर्णित विभिन्न विकल्प हैं help conv2जो इस व्यवहार को नियंत्रित करने की अनुमति देते हैं।

यह भी जान लें कि किनारों का पता लगाने के लिए गुठली की कई अलग-अलग परिभाषाएँ हैं, जैसे लॉग-गैबर्स

विभिन्न प्रकार के फिल्टर

यदि आप एक पूर्ण कार्यान्वयन में रुचि रखते हैं (अजगर में) तो आप पर एक नज़र डाल सकते हैं: https://pythonhosted.org/LogGabor/ (बेशर्म स्व-प्लग a)।


0

आपका कोड सही है। आपको बस फ़िल्टर कर्नेल के साथ 2-डी कनवल्शन करने की आवश्यकता है जो आप बहुत अच्छा कर रहे हैं।

शुभ लाभ


मैं तुम्हें समझ नहीं पा रहा हूं। आप 2-डी कन्वर्सेशन कर रहे हैं (जैसा कि आप conv2 फ़ंक्शन का उपयोग कर रहे हैं)। एक अन्य तरीका आवृत्ति डोमेन में गुणन के लिए जाना है (क्योंकि समय या अंतरिक्ष-डोमेन में दोष आवृत्ति डोमेन में गुणा के बराबर है)। हालाँकि आपको ऐसा करने की आवश्यकता नहीं है, क्योंकि conv2 अनिवार्य रूप से एक ही काम करता है (आंतरिक रूप से !!!)
उज्जवल आर्यन

बिल्कुल :), क्या आप HMAX मॉडल जानते हैं? (एस 1, सी 1, एस 2, सी 2 परतें ...)। मैं अब C1 परत (S1 इकाइयों के बीच अधिकतम संचालन) की गणना करने की कोशिश कर रहा हूं, क्या आप उस (matl कोड) के बारे में कुछ विचार जानते हैं?
लिस्केट
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.