Image 为什么该图仅在Matlab中显示黑色图像?

Image 为什么该图仅在Matlab中显示黑色图像?,image,matlab,image-processing,convolution,Image,Matlab,Image Processing,Convolution,我学习了卷积并编写了如下程序: gambar = imread('adidas.jpg'); imshow(gambar); mask = [-1 -1 -1; -1 -8 -1; -1 -1 -1]; gray = rgb2gray(gambar); thresh = graythresh(gray); imbw = im2bw(gray,thresh); hasil = conv2(double(imbw),mask,'valid'); figure; imshow(hasil); 我拍

我学习了卷积并编写了如下程序:

gambar = imread('adidas.jpg');
imshow(gambar);
mask = [-1 -1 -1; -1 -8 -1; -1 -1 -1];
gray = rgb2gray(gambar);
thresh =  graythresh(gray);
imbw = im2bw(gray,thresh);
hasil = conv2(double(imbw),mask,'valid');
figure;
imshow(hasil);
我拍摄的图像:

我希望输出如下:


但是,我刚刚得到了一张黑色的图片。为什么?它与我使用的Matlab版本有关吗?

我不知道你在用你的代码做什么,但是,结果在
-16
0
的范围内,因为
double
图像
0
为黑色
1
(或高于1的任何内容)为白色。因此,您应该这样更改代码:
mask=[-1-1-1;-1-8-1;-1-1-1]./-16
,这样矩阵
hasil
将在
0-1
范围内。但你仍然不会得到你想要的结果。你会得到一张类似于
imbw
的图片,非常感谢。在我看到你的评论后,我已经弄明白了原因:很高兴你已经弄明白了。。请将其作为答案发布,并将其标记为已接受:)事实上,我让你把你想出的答案贴出来,并在答案上做标记。通常,
imshow
只会显示从0到1的强度,带有
双倍的数字。使用
imshow(hasil,[])
进行自动强度缩放。