为啥用二值化处理图像之后,还会有其他的灰度值,尤其是在一些边缘的位置。比如opencv里的cvThreshold

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为啥用二值化处理图像之后,还会有其他的灰度值,尤其是在一些边缘的位置。比如opencv里的cvThreshold相关的知识,希望对你有一定的参考价值。

为什么用二值化处理图像之后,还会有其他的灰度值,尤其是在一些边缘的位置。比如opencv里的cvThreshold,变成0和255的灰度值。
第一次在百度提问,不知道怎么提问和给分 先谢过了
251 0 0 0 0 0 0
255 0 0 0 0 0 0
255 0 0 0 0 0 0
255 0 0 0 0 0 0
252 0 0 0 0 0 0
255 0 0 0 0 0 0
254 0 0 0 0 0 0
255 255 0 0 0 0 2
255 252 1 1 4 0 3
0 255 253 3 0 1 0
0 255 255 0 1 0 2
1 253 255 250 1 2 0
0 255 253 255 0 0 4
0 255 253 255 0 1 0
1 254 255 254 255 1 1
0 255 253 255 255 0 1
0 255 255 253 255 253 0
0 254 253 255 253 255 2

没有用过opencv. 只好根据原理作分析。
Threshold 叫或值 (门字头,里面一个或字),2值化时,大于它为 白,小于它为黑。
用1字节无符号数表示颜色时,255为白,0为黑。
做归一化处理后,2值化的颜色 1为白,0为黑。
边缘部分,计算有误差,255,254,253,252 就算白,0,1,2,3,4就算黑。屏幕显示时,肉眼是分辨不出这点误差的。
你可以对2值化后的图像值作归一化处理,得到1和0,然后再放大(乘255),就可得到满意的数值。
至于左边界上 1 254 253, 0 255 255,可能是2值化前,颜色原本就有差别。不是2值化的错误。
---
百度提问,知道系统会给答题者20分,你不需要给分。除非你想吸引别人来答题,给奖励,奖励分要从你的财富分里扣除(即使没人答题也要扣掉的)。追问

非常感谢~我多问一下,变成0和1之后会出现类似情况,非物体的地方(还是边缘)会出现灰度为1的像素点(背景为0,目标是1)。因为我想往目标像素点的位置存上数值来代替这一点的灰度,所以有其他的灰度值就有干扰。还是谢谢你的细心回答,非常感谢。

参考技术A 保存图片使用bmp格式,jpg的压缩是有损耗的

matlab 图像处理 二值化

通过阈值对图像进行二值化处理,怎么确定阈值?
在直方图中,怎么创造出双峰图?
谢谢
通过imhist观察的直方图很平整,看不出谷点,希望能够通过编程来准确的确定阈值。

你读入的图像是rgb图像,要先转换成灰度图,阈值的选取有很多种方法,你可以用灰度直方图,取谷点;
1、若想快速转变成二值图像则:
i=imread('tuxiang.jpg');
i1=rgb2gray(i);%i1灰度图像
i2=im2bw(i1);% i2是二值图像,不需要求阈值
2、如果你要找直方图谷点,可以imhist(i1)画出灰度直方图,然后观察出谷底,若想编程求谷点的我就不给你编了,不太难;
3、或者你可以自己设经验值
Imax=max(max(i1));
Imin=min(min(i1));
T=round(Imax-(Imax-Imin)/2);%我随便取的,但基本较为好用
i2=(i1)>=T;%i2是二值图像
参考技术A 讲的不清楚....比如你要把皮肤与景色区别开来,有这样的前提你才能去找二值化的阈值

直方图中峰值有很多个,双峰图?2个最大值嘛?

以上是关于为啥用二值化处理图像之后,还会有其他的灰度值,尤其是在一些边缘的位置。比如opencv里的cvThreshold的主要内容,如果未能解决你的问题,请参考以下文章

二值化处理与边缘检测

图像灰度化、二值化理解

怎样用opencv语句求二值化图像总的灰度值

图像二值化处理Java

解释一下啥是二值化?

python opencv身份证灰度图二值化应该怎么处理