机器视觉#5 数字图像基础3 距离、区域、边界、直方图

像素之间的距离

对于像素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下图是一个细胞图像,我们要想提取出细胞核,就把灰度直方图求出来,我们用博古的灰度值作为二值化的一个阈值,就可以得到二值化后的图像。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值