用matlab进行图像处理时,经常会遇到设置一个阈值将灰度图处理为二值图的情况。
一般都会这样子
I=imread('1.jpg');
level=graythresh(I);
BW=im2bw(I,level);
这里就有一个小坑了
比如1.jpg这个读入的图片,每一个像素位置的灰度都是整型。但是你强行转成了double型,就会导致level,每次被计算出来都是0。
这个原因是因为graythresh函数错误地认为,图片的每个灰度值都是0-1之间的最大值,所以一直进行的是0-1之间的取阈值。这也就是为什么在取阈值前,我们习惯对图片归一化的原因(一部分原因吧)。
这个问题在matlab answer上也有比较好的回答。