Convolution giving decimal point in the result
1 次查看(过去 30 天)
显示 更早的评论
Hi,
Im trying to learn to look on the result from the kernel after convolution. Even i followed youtube for the double on the data but yet has a problem with the result.
Here is the code and the result, i don't know what else i had to change..
I = imread('C:\\MEKH\\LENA.jpg');
figure, imshow(I);
J=rgb2gray(I);
figure, imshow(J)
J=double(J)
A = [1,1,1;1,1,1;1,1,1]/9;
B = conv2(J,A,'same')
B=double(B)
figure, imshow(B)
Result:
Input
J =
222 208 255 255 253
105 141 82 108 169
121 252 4 1 124
89 124 79 195 227
253 252 196 221 250
B =
75.1111 112.5556 116.5556 124.6667 87.2222
116.5556 154.4444 145.1111 139.0000 101.1111
92.4444 110.7778 109.5556 109.8889 91.5556
121.2222 152.2222 147.1111 144.1111 113.1111
79.7778 110.3333 118.5556 129.7778 99.2222
0 个评论
采纳的回答
Ameer Hamza
2020-6-13
编辑:Ameer Hamza
2020-6-13
the output of conv2() is expected to be a fractional number. To use imshow, first convert it to uint8(). There are two alternatives
Convert the output of conv to uint8
I = imread('C:\\MEKH\\LENA.jpg');
figure, imshow(I);
J = rgb2gray(I);
figure, imshow(J)
J = double(J)
A = [1,1,1;1,1,1;1,1,1]/9;
B = conv2(J,A,'same')
B = uint8(B)
figure, imshow(B)
Or, use im2double() to convert the original image to double datatype
I = im2double(imread('C:\\MEKH\\LENA.jpg'));
figure, imshow(I);
J=rgb2gray(I);
figure, imshow(J)
A = [1,1,1;1,1,1;1,1,1]/9;
B = conv2(J,A,'same')
figure, imshow(B)
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Migrate GUIDE Apps 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!