matlab graythresh()函数使用的注意点

来源:互联网 发布:淘宝客服的职责是什么 编辑:程序博客网 时间:2024/06/10 07:43

用matlab进行图像处理时,经常会遇到设置一个阈值将灰度图处理为二值图的情况。

一般都会这样子

I=imread('1.jpg');level=graythresh(I);BW=im2bw(I,level);

这里就有一个小坑

比如1.jpg这个读入的图片,每一个像素位置的灰度都是整型。但是你强行转成了double型,就会导致level,每次被计算出来都是0。



这个原因是因为graythresh函数错误地认为,图片的每个灰度值都是0-1之间的最大值,所以一直进行的是0-1之间的取阈值。这也就是为什么在取阈值前,我们习惯对图片归一化的原因(一部分原因吧)。

这个问题在matlab answer上也有比较好的回答。

https://cn.mathworks.com/matlabcentral/answers/321572-why-does-the-graythresh-function-return-0-on-input-images-of-type-double



原创粉丝点击