数字图像处理一 | 图像概念及阈值分割的python实现

数字图像处理总结一

@Eason Sheng
图像概念 & 阈值分割
文末有代码链接。

图像

数字图像描述的是一个二元函数f(x,y),将图像的坐标和图上某处的值联系起来。
有三种图片,但本质都是灰度图像,像素值也称为灰度值。
图像种类分为:
二值图像 – g r a y l e v e l = 0 o r 255 / 1 gray level = 0 or 255/1 graylevel=0or255/1
灰度图像 – g r a y l e v e l ∈ [ 0 , 255 ] gray level \in [0,255] graylevel[0,255]
彩色图像 – 三个通道的灰度图片
伪彩图像、高维图片 – 不作详细介绍

阈值分割算法

阈值分割就是利用图片灰度的分布规律,来分割出图片中不同的物体。
而每个物体在图片中的都是一个个的正态分布
所以阈值分割就需要找到一个阈值来分出几个正态分布
而要找到那个阈值,就需要引入一个概念 – 灰度直方图

灰度直方图

就是统计图片中的灰度分布。
横坐标是0~255的灰度值,纵坐标是每个灰度值在图片中的出现的个数
每一个物体都有在一段灰度值中的分布,可以看出图片中物体的分布
找到那个阈值之后,是可以将阈值之下的置为0,之上的置为最高值。
但每张图都有不同的阈值,所以需要一个算法,可以针对不同的图,自动找到那个可以分割出的阈值
即算法的普适性

OTSU

OTSU是一个可以自动找到分割阈值的算法
其核心思想是:
将所有像素通过一个阈值分为前景和背景,然后用一个方差来描述两个类距离图像中心的距离的加和,这个方差最大时,两个类分得最开,对应用的阈值最优

算法描述
先得到灰度直方图
对0-255的每个灰度值,来计算方差
方差公式: σ 2 = ω 0 ω 1 ( μ 1 − μ 0 ) 2 \sigma^2=\omega_0 \omega_1(\mu_1-\mu_0)^2 σ2=ω0ω1(μ1μ0)2
ω = ∑ P ( i ) \omega =\sum P(i) ω=P(i)
P ( i ) = n i / N P(i)=n_i/N P(i)=ni/N
μ = ∑ i P ( i ) / ω \mu =\sum iP(i)/\omega μ=iP(i)/ω
得到最大方差对应的阈值作为分割阈值

Entropy

熵分割也是一种可以自己找到分割需要的阈值的算法
熵描述的是信息量
而阈值分割问题,其实就是将图片分为前景和背景
如果前景信息量大的同时,背景的信息量也很大,那么就说明分割的比较好
所以核心思想就是:
Maximum( H = H W + H B H=H_W+H_B H=HW+HB)

算法描述
求出灰度直方图
对每个像素值,计算前景背景熵之和
得到熵最大的那个阈值作为最终的阈值
熵:
H b = − ∑ 0 → t p i l o g ( p i ) H_b=-\sum^{0 \to t}{p_i log(p_i)} Hb=0tpilog(pi)
H w = − ∑ t + 1 → 255 p i l o g ( p i ) H_w=-\sum^{t+1 \to 255}{p_ilog(p_i)} Hw=t+1255pilog(pi)

Code

这里的两种阈值算法都可以在我的GitHub上的项目里找到。
访问受限时可在码云访问。
该项目是一个包括阈值分割、卷积滤波、形态学和灰度形态学的数字图像处理算法集合
且带有GUI,有很好的演示效果
觉得可以别忘了star哦~

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值