图像基础二值化

图像的二值化,就是将图像上的像素点的灰度值设置为0或255,也就是将整个图像呈现出明显的只有黑和白的视觉效果。

一幅图像包括目标物体、背景还有噪声,要想从多值的数字图像中直接提取出目标物体,最常用的方法就是设定一个阀值T,用T将图像的数据分成两个部分:大于T的像素群和小于T的像素群。这是研究灰度变换的最特殊方法,成为图像的二值化。

全局二值化

一幅图像包括目标物体、背景还有噪声,要想从多值的数字图像中直接提取出目标物体,最常用的方法就是设定一个全局的阈值T,用T将图像的数据分成两部分:大于T的像素群和小于T的像素群。将大于T的像素群的像素值设定为白色(或者黑色),小于T的像素群的像素值设定为黑色(或者白色)。

全局二值化,在表现图像细节方面存在很大缺陷。为了弥补这个缺陷,出现了局部二值化方法。
局部二值化的方法就是按照一定的规则将整幅图像划分为N个窗口,对这N个窗口中的每一个窗口再按照一个统一的阈值T将该窗口内的像素划分为两部分,进行二值化处理。
部二值化也有一个缺陷。这个缺陷存在于那个统一 阈值的选定。这个阈值是没有经过合理的运算得来,一般是取该窗口的平局值。这就导致在每一个窗口内仍然出现的是全局二值化的缺陷。为了解决这个问题,就出现了局部自适应二值化方法。
局部自适应二值化,该方法就是在局部二值化的基础之上,将阈值的设定更加合理化。该方法的阈值是通过对该窗口像素的 平均值E,像素之间的差平方P,像素之间的 均方根值Q等各种局部特征,设定一个 参数方程进行阈值的计算,例如:T=a*E+b*P+c*Q,其中a,b,c是自由参数。这样得出来的二值化图像就更能表现出二值化图像中的细节。
代码如下
function [ binaryResult] = binarization()
%BINARIZATION Summary of this function goes here
%   Detailed explanation goes here
filename='111.png';
I=imread(filename);
subplot(1,2,1);
imshow(I);
mysize=size(I);
if mysize>2%若是彩色图,则转换为灰度图像
    I=rgb2gray(I);
end
thread=graythresh(I);%自动确定阀值
binaryResult=im2bw(I,thread);
subplot(1,2,2);
imshow(binaryResult);
end






局部自适应二值化

相关文章
相关标签/搜索
每日一句
    每一个你不满意的现在,都有一个你没有努力的曾经。
公众号推荐
   一个历史类的公众号,欢迎关注
一两拨千金