有一种改进的阈值处理技术,其使用变化的阈值完成对图像的阈值处理,这种技术被称为自适应阈值处理。
在进行阈值处理时,自适应阈值处理的方式通过计算每个像素点周围临近区域的加权平均值获得阈值,并使用该阈值对当前像素点进行处理。
与普通的阈值处理方法相比,自适应阈值处理能够更好地处理明暗差异较大的图像。
OpenCV提供了函数cv2.adaptiveThreshold()来实现自适应阈值处理,该函数的语法格式为:
式中:
函数cv2.adaptiveThreshold()根据参数adaptiveMethod来确定自适应阈值的计算方法,函数包含cv2.ADAPTIVE_THRESH_MEAN_C和cv2.ADAPTIVE_THRESH_GAUSSIAN_C两种不同的方法。这两种方法都是逐个像素地计算自适应阈值,自适应阈值等于每个像素由参数blockSize所指定邻域的加权平均值减去常量C。两种不同的方法在计算邻域的加权平均值时所采用的方式不同:
【例6.11】对一幅图像分别使用二值化阈值函数cv2.threshold()和自适应阈值函数cv2.adaptiveThreshold()进行处理,观察处理结果的差异。
通过对比普通的阈值处理与自适应阈值处理可以发现,自适应阈值处理保留了更多的细节信息。在一些极端情况下,普通的阈值处理会丢失大量的信息,而自适应阈值处理可以得到效果更好的二值图像。
你是用什么软件对图像进行阈值处理?如果你用的是MATLAB,则可以先把真彩图转化成灰度图,再用graythresh得到大津法的阈值,最后将此阈值代入二值分割。例子如下:1.
I=imread('真彩图')
%读取真彩图(原图)
2.
J=rgb2gray(I)
%将原图转化成灰度图
3.
level=graythresh(J)
%计算阈值
4.
BW=im2bw(J,level)
%代入阈值进行二值分割
仅以每次加1为例0-8可以每次都执行i=(i+1)%9,
2-255可以每次都执行i=(i+1)%254+2,
0-99可以每次都执行i=(i+1)%100
这样就不用加判断了
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)