چگونه بدون استفاده از تابع ایمفیلتر در متلب فیلتر خطی کنیم؟

موسسه پایا پروژه به عنوان متصدی انجام پروژه های متلب  وظیفه ی خود می داند که در راستای آموزش نرم افزار متلب  گام های موثری را بردارد. با توجه به اینکه یک دوره آموزشی متلب مستلزم تمرین و تلاش بسیار است. اما این موسسه تلاش می کند سهم کوچکی در جهت یادگیری شما داشته باشد.

در انجام پروژه متلب و ایجاد فیلتر می توان لبه ها را تیز کرد، نویز تصادفی را کاهش داد و نورهای ناهموار را می توان با استفاده از تکنیک فیلتر خطی اصلاح کرد. ارتباط تصویر با هسته فیلتر مناسب این فرآیند را تکمیل می کند.

تابع imfilter مقدار هر پیکسل خروجی را با استفاده از محاسبات ممیز شناور با دقت دوگانه محاسبه می کند. اگر نتیجه خارج از محدوده مجاز نوع داده باشد، Impfilter آن را به آن محدوده کاهش می دهد. اگر نوع داده یک عدد صحیح باشد، imfilter مقادیر کسری را گرد می کند.

کد فیلتر خطی را بدون استفاده از تابع imfilter  در پروژه متلب

اکنون پس از درک تعاریف فیلتر خطی و تابع imfilter، کد فیلتر خطی را بدون استفاده از تابع imfilter در متلب می نویسیم.

 

نحو:

Filter = NewFilters (y,x,OldFilters)

 

اعمال فیلترهای x و y برای کل شی سری زمانی مالی با مشخصات فیلتر منجر به Filter = NewFilters (y,x,OldFilters) می شود.

 

فیلتر موجود در “Direct Form II Transposed” معادله تفاوت مشترک را پیاده سازی می کند. شی سری زمانی مالی NewFilters شامل همان سری داده ها (نام ها) به عنوان OldFilters ورودی است.

 

مثال 1:

 MATLAB code for read image %

;X=imread(‘GeeksforGeeks.tif’)

;figure,imshow(X)

;title(‘Original Image’)

;corr=[0 0.6 0.6;-1 0.5 0.3; 0.5 0.1 0;]

corr=[0.6   %

    0.5

   [ 0.2

corr=ones(6,6)/36  %

 

تصویر ورودی:

بر اساس اندازه هسته، تصویر ورودی را با صفر قرار دهید. علاوه بر این، آرایه پد تابعی داخلی Matlab را می توان برای padding آرایه استفاده کرد.

 MATLAB code for linear filtering %

;pad1= size(corr,1)-1

;pad2= size(corr,2)-1

;output=uint8(zeros(size(X)))

if(size(corr,1)==1)

Y=zeros(size(X,1),size(X,2)+pad2;)

;n=0

;m=floor(size(corr,2)/2)

;sz1=size(Y,1)

;sz2=size(Y,2)-pad2

elseif(size(corr,2)==1)

;Y=zeros(size(X,1)+pad1,size(X,2))

;n=floor(size(corr,1)/2)

;m=0

;sz1=size(Y,1)-pad1

;sz2=size(Y,2)

else

;Y=zeros(size(X,1)+pad1,size(X,2)+pad2)

;n=floor(size(corr,1)/2)

;m=floor(size(corr,2)/2)

;sz1=size(Y,1)-pad1

;sz2=size(Y,2)-pad2

end

for i=1:size(X,1)

for j=1:size(X,2)

;Y(i+n,j+m)=X(i,j)

end

end

;szcorr1=size(corr,1)

;szcorr2=size(corr,2)

for i=1:sz1

for j=1:sz2

;sum=0

;n=i

;m=j

for a=1:szcorr1

for b=1:szcorr2

.Calculated is the weighted sum of the neighbourhood pixels

;sum=sum+(Y(n,m)*corr(a,b))

;m =m+1                 

end

;m=j

;n=n+1

end

;output(i,j)= sum

end

end

;figure,imshow(output)

;title(‘After linear filtering’)

خروجی:

پس از فیلتر خطی

 

 

Ones(6,6)/36 برای هسته همبستگی.

پس از فیلتر خطی

 

مثال 2:

;A=imread(‘Coins.tif’)

;figure,imshow(A)

;title(‘Original Image’)

;corr=[0 0.6 0.6;-1 0.5 0.3; 0.5 0.1 0;]

corr=[0.6 %

    0.5  %

   [ 0.2  %

;corr=ones(6,6)/36  %

تصویر ورودی:

 

 

بر اساس اندازه هسته، تصویر ورودی را با صفر قرار دهید. علاوه بر این، تابع Matlab داخلی padarray می تواند برای padding آرایه استفاده شود.

;pad1= size(corr,1)-1

;pad2= size(corr,2)-1

;output=uint8(zeros(size(A)))

  

if(size(corr,1)==1)

;B=zeros(size(A,1),size(A,2)+pad2)

;m=0

;n=floor(size(corr,2)/2)

;sz1=size(B,1)

;sz2=size(B,2)-pad2

  

elseif(size(corr,2)==1)

  

;B=zeros(size(A,1)+pad1,size(A,2))

;m=floor(size(corr,1)/2)

;n=0

;sz1=size(B,1)-pad1

;sz2=size(B,2)

    else

;B=zeros(size(B,1)+pad1,size(A,2)+pad2)

;m=floor(size(corr,1)/2)

;n=floor(size(corr,2)/2)

;sz1=size(B,1)-pad1

;sz2=size(B,2)-pad2

    end

for i=1:size(A,1)

for j=1:size(A,2)

;B(i+n,j+m)=A(i,j)

  end

 end

;szcorr1=size(corr,1)

;szcorr2=size(corr,2)

for i=1:sz1

for j=1:sz2

;sum=0

;m=i

;n=j

  

for x=1:szcorr1

for y=1:szcorr2

  

.Calculated is the weighted sum of the neighbourhood pixels

;sum=sum+(B(m,n)*corr(x,y))

;n = n+1;                    

 end

;n=j

;m=m+1

 end

;output(i,j)= sum

 end

end

;figure,imshow(output)

;title(‘After linear filtering’)

خروجی:

منابع:

https://www.geeksforgeeks.org/how-to-linear-filtering-without-using-imfilter-function-in-matlab/

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

این زمینه را پر کنید
این زمینه را پر کنید
لطفاً یک نشانی ایمیل معتبر بنویسید.
شما برای ادامه باید با شرایط موافقت کنید

چهارده − 5 =

سفارش پروژه