元宵节看样子快到了,才立春、才春节、才开工,不知不觉到了元宵,估摸着2019确实过得挺快的!
元宵节是中国与汉字文化圈地区以及海外华人的传统节日之一。正月是农历的元月,古人称夜为“宵”,所以把一年中第一个月圆之夜正月十五称为元宵节。在此,“计算机视觉战队”提前祝节日快乐!
不知道大家还记得系列3说的什么吗?看样子猪年真的把一些人过“傻”咯~我提醒下,之前我们已经介绍了图像基本知识、算法,介绍了Python的基本,介绍了彩色图像处理的算法,今天我们来一点特殊的,那就是灰色图像处理的一些算法,一并来简单了解下,因为接下来我们要开始接触实际性的知识及实践。
hui
灰
se
色
tu
图
xiang
像
所谓灰度处理是根据单色图像的灰度对输出图像的灰度进行再定义、以改善图像的对比度。单色图像的灰度有256级、128级、64级等。
接下来,我均以256级单色图像举例。假设设源图像的灰度值为f(i, j),处理后的灰度值为g(i, j)。
01
灰色图像的逆反处理
这种处理方式其实与之前介绍彩色图像一样的,其算法理论一样,如:
g(i, j) = 255 - f(i, j)
02
灰色图像的对比度处理
增大对比度
输入的灰度值越高,对应的输出灰度值越低;灰度值减少,图像变暗,从而使对比度增加。
通过扩展灰度范围来增加对比度,目的是为了更好地分割目标与背景。
将设m,n分别为图像的行数和列数,f(m, n)为原图像的灰度值,g(m, n)为目标图像的灰度值,k为斜率,k=255/(b-a),[a, b]为需要转换的灰度区间。
现在,对[a, b]灰度区间的像素进行对比度增强,斜率k必大于1,在灰度区间[a, b]线性变换成[0, 255],起到对比度增强的作用。在小于灰度值a的像素中统一设置为0(黑色),在大于灰度值b的像素中统一设置为255(白色),目的是为了更好地分割目标与背景。
OpenCV代码
for (int y = 0; y < gray.rows; y++)
{
for (int x = 0; x < gray.cols; x++)
{
if (gray.at<uchar>(y, x) < fa)
gray_Contrast.at<uchar>(y, x) = 0;
else if (gray.at<uchar>(y, x) >fb)
gray_Contrast.at<uchar>(y, x) = 255;
else
gray_Contrast.at<uchar>(y, x) = k*(gray.at<uchar>(y, x) - fa);
}
}
减小对比度
改善对比度
增强对比度
03
局部滤波处理
局部滤波处理是指利用3*3的图像块内的像素的颜色值对当前像素进行设定的一种图像处理技术。
平均值滤波
g(i, j)=( f(i-1, j-1) + f(i-1, j) + f(i-1, j+1) + f(i, j-1) + f(i, j) + f(i, j+1) + f(i+1, j-1) + f(i+1, j) + f(i+1, j+1) ) / 9
* 这里要注意的是对于边缘的像素的情况,防止越界。
最小值滤波
最小值滤波是指在图像中以当前像素f(i, j)为中心切出一个N*M(例如3*3)像素组成的图像块,g(i, j)取图像块中灰度值中的最小值。
最大值滤波
最大值滤波是指在图像中以当前像素f(i, j)为中心切出一个N*M(例如3*3)像素组成的图像块,g(i, j)取图像块中灰度值中的最大值。
中值滤波
中值滤波是指在图像中以当前像素f(i,j)为中心切出一个N*M(例如3*3)像素组成的图像块,g(i,j)取图像块中所有灰度排序后序列的中间值。
04
灰度图像直方图
对于每个灰度值,求出在图像中具有该灰度值的像素数的图形叫做灰度直方图,灰度直方图是灰度级的函数,描述图像中具有相同灰度像素的个数。灰度直方图的横坐标是灰度级,纵坐标是该灰度出现的频率(即像素的个数)。
直方图的用途主要是给出了一个简单可见的指示,用来判断一幅图像是否合理的利用了全部被允许的灰度级范围。一般一幅数字图像应该利用全部或几乎全部可能的灰度级范围,否则增加了量化间隔。
一旦数字化图像的级数小于255,丢失的信息将不能恢复。如果图像具有超出数字量化器所能处理的范围的亮度,则这些灰度级将简单的置为0或255,因此将在直方图的一端或两端产生尖峰。
05
灰度图像二值化算法
类判别法寻找阙值的步骤
1)计算输入图像的灰度级直方图(用灰度级的概率函数PHS(i)来表示)
2)计算灰度均值(Ave):
Ave = sigma((i - 1)*Phs(i)) i: 0->255
3)计算灰度类均值(Aver(k))和类直方图和(W(k)):
Aver(k) = sigma((i+1)*Phs(i)) i: 0->k
W(k) = sigma(Phs(i)) i: 1->k
4)计算类分离指标
Q(k)={[Ave*W(k)-Aver(k)]^2)}/[W(k)*(1-W(k))]}
5)求使Q最大的k,最佳阙值: T = k - 1
还有其他二值处理方式:
等灰度片二值化
将输入图像在某两个等宽的灰度级范围内的所有像素全部置为0(黑),其余灰度级的所有像素全部置为255(白),则生成黑白二值图像。
线性二值化
将输入图像在某一灰度级内的所有像素全部置为0(黑),其余灰度级的所有像素全部置为原值的1/2,则生成黑白二值图像,并将图像与背景分离。
二值图像处理是指将二值化的图像进行某种修正,使之更适合于图像测量。二值图像处理包括以下操作:
膨胀:使粒子变大,对图像进行膨胀处理之后再进行收缩处理,则可以修正图像的凹槽;
收缩:使粒子变小,对图像进行收缩处理之后再进行膨胀处理,则可以修正图像的凸槽;
清除孤立点:清除由一个像素构成的对象以及修正由一个像素构成的孔;
清除粒子:清除任意面积以下的对象;
清除超大粒子:清除任意面积以上的对象;
洞穴填充:填充任意范围。
感谢您抽出
.
.
来阅读本文