How to apply custom filter to a grayscale image?
Ältere Kommentare anzeigen
I need to have grayscale image and develop a program that applies the filters given below to that grayscale image. I implemented following code but not sure if it is ok or not?
grayImage = imread("cameramanImage.tiff");
h = [ 2 -1 -1
-1 2 -1
-1 -1 2 ];
im_outFirst = filter2(h, grayImage);
Akzeptierte Antwort
Weitere Antworten (1)
Ameer Hamza
am 7 Jun. 2020
Bearbeitet: Ameer Hamza
am 8 Jun. 2020
For images, use conv2(): https://www.mathworks.com/help/releases/R2020a/matlab/ref/conv2.html. filter2 is similar to conv2 but applies a rotated filter. Also, I suggest using image as first input and filter as second
im_outFirst = conv2(grayImage, h);
In the general case, it does not matter, but if you specify 'same' or 'valid' option, then it makes a difference.
5 Kommentare
Atalay Asa
am 7 Jun. 2020
Ameer Hamza
am 8 Jun. 2020
Sorry, I wanted to write conv2() in the line of code in my answer. If you use this syntax
im_outFirst = filter2(grayImage, h);
im_outFirst = conv2(grayImage, h);
Then the difference is that filter2 applies a rotated filter. In the context of image processing, conv2() is more appropriate, or use imfilter() as suggested by Image Analyst.
Atalay Asa
am 8 Jun. 2020
Ameer Hamza
am 8 Jun. 2020
Something like this
im_gray = rgb2gray(im2double(imread('pears.png')));
h = [ 2 -1 -1
-1 2 -1
-1 -1 2];
im_filt = zeros(size(im_gray)-2);
for row=2:size(im_gray,1)-1
for col=2:size(im_gray,2)-1
im_filt(row-1, col-1) = sum(im_gray(row-1:row+1, col-1:col+1).*h, 'all');
end
end
Atalay Asa
am 9 Jun. 2020
Kategorien
Mehr zu Image Filtering finden Sie in Hilfe-Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!