像素之间的距离
对于像素p,q和z,其坐标分别为(x,y)、(s,t)和(v,w),如果函数D满足距离三要素,即:
(1)非负性,D(p,q) >= 0 (D(p,q) = 0,当且仅当p = =q)
(2)对称性,D(p,q) = D(q,p)
(3)三角不等式,D(p,z)<= D(p,q)+ D(q,z)
欧式距离:两个点直接相连;De(p,q) = sqrt((x-s)^2+(y-t)^2)
城市街区距离(曼哈顿距离):只能横着走或者竖着走;D4(p,q) = |x - s| + |y - t|
棋盘距离:D8(p,q) = max(|x - s|,|y - t|)
(a) 5 ;(b) 7; (c) 4;
第四部分 图像灰度直方图
灰度直方图:
对于一幅图像,若对应于每一个灰度值,统计出具有该灰度值的像素数,并描绘出像素数-灰度值图形,则该图形称为该图像的灰度直方图,简称直方图。
横轴是灰度值,假设我们用八位来量化,2^8 = 256,就有256个灰度,范围就是0~255。
纵轴是归一化后的值 ,从灰度直方图中可知,特别黑的像素和特别白的像素很少。这是统计结果。
计算灰度直方图算法:
(1)数组Num的所有元素赋值为0;
(2)对于图像的所有像素,进行Num[f(x,y)] = Num[f(x,y)] + 1操作
(3)p(l) = Num(l)/M,M表示图像的像素总数。
要求图(a)的灰度直方图,分别统计出灰度值为:0,1,2,3,4,5的数量。
在MATLAB中绘制灰度直方图。
l = imread('a.jfif');
figure,imshow(l)
figure,imhist(l)
右图默认把灰度分成了256个,我们可以更改,比如分为64个:
l = imread('a.jfif');
figure,imshow(l)
figure,imhist(l,64)
我们把256个灰度级分成了64个区间。
假设我们把每个点的灰度值都加50,图1变亮,图2右移;
l = imread('a.jfif');
x = l + 50;
figure,imshow(l)
figure,imhist(l)
figure,imshow(x)
figure,imhist(x)
直方图虽然左右移动了,但是分布的规律没有变化。
灰度直方图的均衡化:
l = imread('a.jfif');
x = histeq(l);
figure,imshow(x)
figure,imhist(x)
我们对灰度直方图均衡化后,图片效果会变好(如果原图片是灰度值分布不均匀),每一个灰度值都对应有像素元素。
直方图的性质
性质:
(1)直方图是图像最基本的统计特征;
(2)灰度直方图只能反映图像灰度的分布情况,而不能反映图像像素位置;
(3)一幅图像对应唯一的灰度直方图,反之不成立;
(4)整个图像的直方图是各部分图像直方图之和;
直方图的应用
(1)用于判断图像量化是否恰当
直方图的快速检查可以使数字化中产生的问题及早暴露出来,以免浪费大量时间。
(2)用于确定图像二值化的阈值
假定一幅图像如下图所示,背景是黑色,物体是灰色。容易得知直方图上的左峰由背景中的黑色像素产生,而右峰由物体中各灰度级产生。选择波谷对应的灰度作为阈值T,利用下式对图像二值化,得到一副二值图像。
x下图是一个细胞图像,我们要想提取出细胞核,就把灰度直方图求出来,我们用博古的灰度值作为二值化的一个阈值,就可以得到二值化后的图像。