im2bw是matlab中经常用到的一个函数,其作用就是将输入图像转化为二值图像,但是其中也有一些坑啊!在检测应用中,一种比较好的选择是将输入图像转化为uint8后再使用im2bw函数,为什么呢?下面给出一个例子。
假如原图为double类型,tt1=im2bw(img,thr)后tt1中的结果元素大部分可能都为1,原因是im2bw的作用是将img/255大于thr的元素置为1,反之则置为0,此时img/255的结果是位于0-1之间的小数;如果经过img1=uint8(img)后,img1中的元素为uint8类型,是一种整型,因此在计算img1/255时候结果非0即1,导致0会多一些,因此二值化的时候关注的小东西可能会凸显出来。