رفتن به مطلب

فیلتر unsharp mask


ارسال های توصیه شده

سلام من این کد رو نوشتم ولی تو قسمتی که قرمز رنگش کردم تصویر رو نشون نمیده با اینکه gmask مقدارش بین 0 تا 51 هست ولی کامل مشکی نشون میده حتی یه مقدار هم رنگش کمتر نیس نمیدونم مشکلش از چیه

clc;clear all;
close all;


%original image
c=imread('Fig0340(a)(dipxe_text).jpg');
c=rgb2gray(c);
set(gcf,'position',get(0,'screensize'))
subplot(5,1,1)
imshow(c)
[m n]=size(c);


% blurring with guassian filter
for i=3:7
   for j=3:7
       w(i,j)=exp(-(i.^2+j.^2)/18);
   end
end
d=uint8(zeros(size(c)));
for x=3:m-2
   for y=3:n-2
       d(x,y)=w(5,5)*c(x-2,y-2)+w(5,4)*c(x-2,y-1)+w(5,3)*c(x-2,y)+w(5,2)*c(x-2,y+1)+w(5,1)*c(x-2,y+2)+...
              w(4,5)*c(x-1,y-2)+w(4,4)*c(x-1,y-1)+w(4,3)*c(x-1,y)+w(4,2)*c(x-1,y+1)+w(4,1)*c(x-1,y+2)+...
              w(3,5)*c(x,y-2)+w(3,4)*c(x,y-1)+w(3,3)*c(x,y)+w(3,2)*c(x,y+1)+w(3,1)*c(x,y+2)+...
              w(2,5)*c(x+1,y-2)+w(2,4)*c(x+1,y-1)+w(2,3)*c(x+1,y)+w(2,2)*c(x+1,y+1)+w(2,1)*c(x+1,y+2)+...
              w(1,5)*c(x+2,y-2)+w(1,4)*c(x+2,y-1)+w(1,3)*c(x+2,y)+w(1,2)*c(x+2,y+1)+w(1,1)*c(x+2,y+2);
   end
end  
subplot(5,1,2)
imshow(d)


%unsharp mask
gmask=c-d;
subplot(5,1,3)
imshow(gmask)


%result of using unsharp mask
g=c+gmask;
subplot(5,1,4)
imshow(g,[])


%result of using highboost filtering
g=c+4.5*gmask;
subplot(5,1,5)
imshow(g)

slide 45.zip

لینک به دیدگاه
سلام من این کد رو نوشتم ولی تو قسمتی که قرمز رنگش کردم تصویر رو نشون نمیده با اینکه gmask مقدارش بین 0 تا 51 هست ولی کامل مشکی نشون میده حتی یه مقدار هم رنگش کمتر نیس نمیدونم مشکلش از چیه
clc;clear all;
close all;


%original image
c=imread('Fig0340(a)(dipxe_text).jpg');
c=rgb2gray(c);
set(gcf,'position',get(0,'screensize'))
subplot(5,1,1)
imshow(c)
[m n]=size(c);


% blurring with guassian filter
for i=3:7
   for j=3:7
       w(i,j)=exp(-(i.^2+j.^2)/18);
   end
end
d=uint8(zeros(size(c)));
for x=3:m-2
   for y=3:n-2
       d(x,y)=w(5,5)*c(x-2,y-2)+w(5,4)*c(x-2,y-1)+w(5,3)*c(x-2,y)+w(5,2)*c(x-2,y+1)+w(5,1)*c(x-2,y+2)+...
              w(4,5)*c(x-1,y-2)+w(4,4)*c(x-1,y-1)+w(4,3)*c(x-1,y)+w(4,2)*c(x-1,y+1)+w(4,1)*c(x-1,y+2)+...
              w(3,5)*c(x,y-2)+w(3,4)*c(x,y-1)+w(3,3)*c(x,y)+w(3,2)*c(x,y+1)+w(3,1)*c(x,y+2)+...
              w(2,5)*c(x+1,y-2)+w(2,4)*c(x+1,y-1)+w(2,3)*c(x+1,y)+w(2,2)*c(x+1,y+1)+w(2,1)*c(x+1,y+2)+...
              w(1,5)*c(x+2,y-2)+w(1,4)*c(x+2,y-1)+w(1,3)*c(x+2,y)+w(1,2)*c(x+2,y+1)+w(1,1)*c(x+2,y+2);
   end
end  
subplot(5,1,2)
imshow(d)


%unsharp mask
gmask=c-d;
subplot(5,1,3)
imshow(gmask)


%result of using unsharp mask
g=c+gmask;
subplot(5,1,4)
imshow(g,[])


%result of using highboost filtering
g=c+4.5*gmask;
subplot(5,1,5)
imshow(g)

 

سلام

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

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

imshow(w,[],'InitialMagnification','fit')

hugm68d37n0109cbgay1.png

لینک به دیدگاه
سلام

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

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

imshow(w,[],'InitialMagnification','fit')

hugm68d37n0109cbgay1.png

سلام من طبق چیزی که استادمون گفته بود فیلتر گوسی رو از رو فرمولش ساختم گفته بود فیلتر با فرمول گوسی 5*5 باشه و انحراف معیارش 3 باشه

اونجا هم که بازه رو گذاشتم از 3 استاد گفته بود که اینجوری بذارید یعنی این اشتباهه؟

محاسباتم رو یه بار با فرمت دابل انجام دادم نتایجم تغییری نداشت . دابل مقادیر رو خودش اسکیل میکنه؟ من دقیق نمیدونم چه زمان هایی لازمه که تصویر رو دابل کنم

لینک به دیدگاه
سلام من طبق چیزی که استادمون گفته بود فیلتر گوسی رو از رو فرمولش ساختم گفته بود فیلتر با فرمول گوسی 5*5 باشه و انحراف معیارش 3 باشه

اونجا هم که بازه رو گذاشتم از 3 استاد گفته بود که اینجوری بذارید یعنی این اشتباهه؟

محاسباتم رو یه بار با فرمت دابل انجام دادم نتایجم تغییری نداشت . دابل مقادیر رو خودش اسکیل میکنه؟ من دقیق نمیدونم چه زمان هایی لازمه که تصویر رو دابل کنم

 

سلام

تصویر فیلتر رو که براتون گذاشتم، باید شما توی 3 و 3 ماکزیمم داشته باشین، به تدریج که از وسط دور میشین مقدارش کم بده، فیلتر هم باید متقارن باشه.

 

ببینین توی uint8 شما فقط عدهای صحیح 0 تا 255 دارین، هر موقع که توی محاسبات ممکنه مقادیر صحیح نباشن یا بین 0 تا 255 نباشن، باید فرمتش رو تغییر بدین، تا محاسباتتون به علت گرد کردن به مقادیر صحیح 0 تا 255 غلط نشه.

لینک به دیدگاه
سلام

تصویر فیلتر رو که براتون گذاشتم، باید شما توی 3 و 3 ماکزیمم داشته باشین، به تدریج که از وسط دور میشین مقدارش کم بده، فیلتر هم باید متقارن باشه.

 

ببینین توی uint8 شما فقط عدهای صحیح 0 تا 255 دارین، هر موقع که توی محاسبات ممکنه مقادیر صحیح نباشن یا بین 0 تا 255 نباشن، باید فرمتش رو تغییر بدین، تا محاسباتتون به علت گرد کردن به مقادیر صحیح 0 تا 255 غلط نشه.

مرسی اون اعداد رو متوجه شدم دستت درد نکنه

من فیلتر رو که با فرمول ساختم شکل نمودار اون تایع هم این خاصیت تقارن و ... رو داره که گفتین الان من نباید با این فرمول میساختم فیلتر رو؟ آخه تصیرا همشون مال کتابه و تو خود کتاب هم گفته این فیلتر با این فرمول ساخته شده

:ws38:

لینک به دیدگاه
مرسی اون اعداد رو متوجه شدم دستت درد نکنه

من فیلتر رو که با فرمول ساختم شکل نمودار اون تایع هم این خاصیت تقارن و ... رو داره که گفتین الان من نباید با این فرمول میساختم فیلتر رو؟ آخه تصیرا همشون مال کتابه و تو خود کتاب هم گفته این فیلتر با این فرمول ساخته شده

:ws38:

 

خواهش می کنم.

این فرمولی که نوشتی نسبت به مبدا متقارن هست، باید تقارنش رو به 3 و 3 انتقال بدی.

لینک به دیدگاه
خواهش می کنم.

این فرمولی که نوشتی نسبت به مبدا متقارن هست، باید تقارنش رو به 3 و 3 انتقال بدی.

آهااااااااااااااااااااااااااااااااا درست میگید یک دنیا تشکر

لینک به دیدگاه
  • 2 هفته بعد...
آهااااااااااااااااااااااااااااااااا درست میگید یک دنیا تشکر

اگه اشکال نداره من یکی یکی بپرسم سوالامو

اول اینکه چرا باید تقارن رو به 3و3 انتقال بدم؟ تو خواسته مسئله چیزی از تقارن نگفته

و اینکه تقارن رو به 3و3 که انتقال میدم تصویر رو نشون نمیده و یه صفحه سفید نشون میده

لینک به دیدگاه
اگه اشکال نداره من یکی یکی بپرسم سوالامو

اول اینکه چرا باید تقارن رو به 3و3 انتقال بدم؟ تو خواسته مسئله چیزی از تقارن نگفته

و اینکه تقارن رو به 3و3 که انتقال میدم تصویر رو نشون نمیده و یه صفحه سفید نشون میده

 

خواهش می کنم.

 

خب خود تعریف فیلتر گوسی متقارن هست دیگه، اگه نباشه که دیگه گوسی نیست. باید ماکزیممش نقطه وسط باشه، یعنی بیشترین تاثیر رو پیکسل مرکزی داشته باشه، هر چی از پیکسل مرکزی دور میشیم مقدار تاثیر پیکسل ها کمتر بشه.

 

خب کد همون بخش فیلتر گوسی که انتقال دادی رو هم بذار، ممنون.

لینک به دیدگاه
خواهش می کنم.

 

خب خود تعریف فیلتر گوسی متقارن هست دیگه، اگه نباشه که دیگه گوسی نیست. باید ماکزیممش نقطه وسط باشه، یعنی بیشترین تاثیر رو پیکسل مرکزی داشته باشه، هر چی از پیکسل مرکزی دور میشیم مقدار تاثیر پیکسل ها کمتر بشه.

 

خب کد همون بخش فیلتر گوسی که انتقال دادی رو هم بذار، ممنون.

بله متقارن بودنش که هست منظورم این بود نسبت به صفر متقارن باشه که الان خودم متوجه شدم بخاطر اندیس درایه ها نمیشه اونجوری نوشت

اون تیکه رو اینحوری گذاشتم

for i=1:5    for j=1:5
       w(i,j)=exp(-((i-3).^2+(j-3).^2)/18);
   end
end

لینک به دیدگاه
بله متقارن بودنش که هست منظورم این بود نسبت به صفر متقارن باشه که الان خودم متوجه شدم بخاطر اندیس درایه ها نمیشه اونجوری نوشت

اون تیکه رو اینحوری گذاشتم

for i=1:5    for j=1:5
       w(i,j)=exp(-((i-3).^2+(j-3).^2)/18);
   end
end

 

آره درسته همین شکلی باید باشه، الان مشکل کجاست؟

لینک به دیدگاه
آره درسته همین شکلی باید باشه، الان مشکل کجاست؟

مشکلم اینجاست که اینو که به برنامم اضافه میکنم تصویر بعدی رو سفید نشون میده

لینک به دیدگاه
مشکلم اینجاست که اینو که به برنامم اضافه میکنم تصویر بعدی رو سفید نشون میده

 

مریم خانوم فیلترتون باید یه ضریبی نداشته باشه؟

جمع مقادیر فیلتر باید مساوی یک باشه دیگه، تا رنج تصویرمون ثابت بمونه (بین 0 تا 255)، همون اول هم تبدیل به دابل می کنیم تا مشکلی توی محاسبات نداشته باشیم:

 

clc;
clear all;
close all;

%original image
c = imread('Fig0340(a)(dipxe_text).jpg');
c = rgb2gray(c);
[color=#ff0000]c = im2double(c);[/color]

set(gcf,'position',get(0,'screensize'))
subplot(5,1,1)
imshow(c)
[m n]=size(c);

% blurring with guassian filter
for i=1:5    
   for j=1:5
       w(i,j) = exp(-((i-3).^2+(j-3).^2)/18);
   end
end

[color=#ff0000]w = w ./ sum(w(:));[/color]

d = zeros(size(c));

for x=3:m-2
   for y=3:n-2
       d(x,y)=w(5,5)*c(x-2,y-2)+w(5,4)*c(x-2,y-1)+w(5,3)*c(x-2,y)+w(5,2)*c(x-2,y+1)+w(5,1)*c(x-2,y+2)+...
              w(4,5)*c(x-1,y-2)+w(4,4)*c(x-1,y-1)+w(4,3)*c(x-1,y)+w(4,2)*c(x-1,y+1)+w(4,1)*c(x-1,y+2)+...
              w(3,5)*c(x,y-2)+w(3,4)*c(x,y-1)+w(3,3)*c(x,y)+w(3,2)*c(x,y+1)+w(3,1)*c(x,y+2)+...
              w(2,5)*c(x+1,y-2)+w(2,4)*c(x+1,y-1)+w(2,3)*c(x+1,y)+w(2,2)*c(x+1,y+1)+w(2,1)*c(x+1,y+2)+...
              w(1,5)*c(x+2,y-2)+w(1,4)*c(x+2,y-1)+w(1,3)*c(x+2,y)+w(1,2)*c(x+2,y+1)+w(1,1)*c(x+2,y+2);
   end
end  
subplot(5,1,2)
imshow(d,[])

لینک به دیدگاه
مریم خانوم فیلترتون باید یه ضریبی نداشته باشه؟

جمع مقادیر فیلتر باید مساوی یک باشه دیگه، تا رنج تصویرمون ثابت بمونه (بین 0 تا 255)، همون اول هم تبدیل به دابل می کنیم تا مشکلی توی محاسبات نداشته باشیم:

 

clc;
clear all;
close all;

%original image
c = imread('Fig0340(a)(dipxe_text).jpg');
c = rgb2gray(c);
[color=#ff0000]c = im2double(c);[/color]

set(gcf,'position',get(0,'screensize'))
subplot(5,1,1)
imshow(c)
[m n]=size(c);

% blurring with guassian filter
for i=1:5    
   for j=1:5
       w(i,j) = exp(-((i-3).^2+(j-3).^2)/18);
   end
end

[color=#ff0000]w = w ./ sum(w(:));[/color]

d = zeros(size(c));

for x=3:m-2
   for y=3:n-2
       d(x,y)=w(5,5)*c(x-2,y-2)+w(5,4)*c(x-2,y-1)+w(5,3)*c(x-2,y)+w(5,2)*c(x-2,y+1)+w(5,1)*c(x-2,y+2)+...
              w(4,5)*c(x-1,y-2)+w(4,4)*c(x-1,y-1)+w(4,3)*c(x-1,y)+w(4,2)*c(x-1,y+1)+w(4,1)*c(x-1,y+2)+...
              w(3,5)*c(x,y-2)+w(3,4)*c(x,y-1)+w(3,3)*c(x,y)+w(3,2)*c(x,y+1)+w(3,1)*c(x,y+2)+...
              w(2,5)*c(x+1,y-2)+w(2,4)*c(x+1,y-1)+w(2,3)*c(x+1,y)+w(2,2)*c(x+1,y+1)+w(2,1)*c(x+1,y+2)+...
              w(1,5)*c(x+2,y-2)+w(1,4)*c(x+2,y-1)+w(1,3)*c(x+2,y)+w(1,2)*c(x+2,y+1)+w(1,1)*c(x+2,y+2);
   end
end  
subplot(5,1,2)
imshow(d,[])

پس یعنی ما هر نوع فیلتری رو استفاده میکنیم حتما خودمون باید به اون جمع کلش هم باید تقسیمش کنیم درسته؟

یه مورد دیگه اینکه حالا تو اون قسمت پروژه که باید gmask رو بدست بیاریم اختلافشون خیلی کم میشه طوری که کل تصویر سیاه میشه ولی نباید اینجوری بشه

لینک به دیدگاه
پس یعنی ما هر نوع فیلتری رو استفاده میکنیم حتما خودمون باید به اون جمع کلش هم باید تقسیمش کنیم درسته؟

یه مورد دیگه اینکه حالا تو اون قسمت پروژه که باید gmask رو بدست بیاریم اختلافشون خیلی کم میشه طوری که کل تصویر سیاه میشه ولی نباید اینجوری بشه

 

آقا ایمان به جای w = w ./ sum(w(:)) این کد رو گذاشتم

w=(1/25)*w;

و متوجه شدم ضریبی که گفتید رو الان درست شد خروجی ها

دست شما درد نکنه ممنونم از کمک هاتون

لینک به دیدگاه

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .

مهمان
ارسال پاسخ به این موضوع ...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

×
×
  • اضافه کردن...