美文网首页
图像处理中的算法实现

图像处理中的算法实现

作者: 此间不留白 | 来源:发表于2020-03-17 22:18 被阅读0次

图像处理算法中了解了图像处理算法的一些理论知识,包括图像直方图和图像二值化,本篇文章将会结合上篇文章的理论知识,利用python实现图像直方图和图像二值化

图像直方图的绘制

如下图所示的图像,直方图的绘制代码如下所示:


细胞图像
from PIL import Image
import numpy as np
import matplotlib.pyplot as plt
# 加载图片
src  = Image.open("./1.PNG")
r,g,b,v = src_1.split() #通道分离,医学图像,四通道
rn = np.array(r)   # 将图像转换为数组形式
rn = rn.flatten()   # 将矩阵转换为一维数组
n, bins, patches = plt.hist(rn, bins=256, normed=1, facecolor='gray', alpha=0.75)  
plt.show()

绘制完图像的直方图分布如下图所示:


图像二值化的实现

图像二值化的实现,关键是找到一个阈值,实现图像的分割,根据之前所学,图像二值化的实现主要有OTSU算法和熵方法,对于上述图像而言,OTSU算法求取最大阈值的代码如下所示:

  • 加载图像,选取一通道,将其转换为一维数组,以方便处理:
src_1  = Image.open("./1.PNG")
r,g,b,v = src_1.split()
rn = np.array(r)
rn = rn.flatten()  #将二维矩阵,转化为一维数组
  • 求解统计量 每个灰度出现的频率,为了方便处理,去掉频率为0的灰度
rnp = np.bincount(rn)/len(rn)  # 统计每个灰度在所有像素中的频率
rnp = rnp.tolist()
rnp_remove = []
for i in rnp:
    if i!=0.0:
        rnp_remove.append(i)
# 对频率进行累加处理,方便后续步骤求解
rnp_total = []
rnp_sum = 0
for i in range(0,len(rnp_remove)):
    rnp_sum = rnp_sum+rnp_remove[i]
    rnp_total.append(rnp_sum)
  • 求解统计量均值

mean_total = []
mean = 0
for i in range(0,len(rnp_remove)):
    mean = mean+rnp_remove[i]*i/rnp_total[i]
    mean_total.append(mean)
  • 求解统计量方差
sigma = []
s = 0
for i in range(0,len(rnp_remove)):
    s =s + (i-mean_total[i])**2*rnp[i]
    sigma.append(s)
  • 根据求解得到的统计量,计算\delta_b
sigma_total =[]

for i in range (0,len(rnp_remove)):
    w_0 = rnp_total[i]
    w_1 = 1-w_0
    mu_0 = mean_total[i]
    mu_1 = mean_total[len(rnp_remove)-1]-mean_total[i]
    sigma_b = w_0*w_1*(mu_0-mu_1)**2
    sigma_total.append(sigma_b)

最后,统计量\delta_b最大值所对应的下标就是所求得阈值

sigma_total.index(max(sigma_total))

最后,求得结果,如下所示:



考虑到图像质量原因(题目中的图像为截图)手动算法与cv库算法求得结果较为接近

相关文章

  • 图像处理中的算法实现

    在图像处理算法中了解了图像处理算法的一些理论知识,包括图像直方图和图像二值化,本篇文章将会结合上篇文章的理论知识,...

  • NDK 开发实战 - 实现相机美颜功能

    在 《图形图像处理 - 实现图片的美容效果》 一文中提到了图片的美容,采用双边滤波算法来实现,具体的算法流程和实现...

  • NDK 开发实战 - 实现相机美颜功能

    在 《图形图像处理 - 实现图片的美容效果》 一文中提到了图片的美容,采用双边滤波算法来实现,具体的算法流程和实现...

  • [iOS] 图像处理:一种高效裁剪图片圆角的算法

    [iOS] 图像处理:一种高效裁剪图片圆角的算法 [iOS] 图像处理:一种高效裁剪图片圆角的算法

  • 博客收集

    1. 图像处理: 图像处理基本算法-形态学OpenCV-Pythonimage fusion 2. 图像数据: I...

  • 书籍:机器学习和图像处理实战 Practical Machin

    简介 使用Python中的机器学习和神经网络,深入了解图像处理方法和算法。本书从环境设置开始,理解基本的图像处理术...

  • pybind11—python numpy与C++数据传递

    前言 一些处理矩阵运算,图像处理算法,直接采用python实现可能速度稍微慢,效率不高,或者为了直接在python...

  • 图像分割算法总结

    图像处理的很多任务都离不开图像分割。因为图像分割在cv中实在太重要(有用)了,就先把图像分割的常用算法做个总...

  • 一种二维码识别定位算法

    学号 20011210047 姓名 潘浩喆 【嵌牛导读】本文基于传统图像处理技术实现了一种二维码定位算法。算法分为...

  • Core Image专题(二)

    处理图像 处理图像意味着应用滤镜 - 图像滤镜是逐像素检查输入图像,在算法上应用某种效果以创建输出图像。 在Cor...

网友评论

      本文标题:图像处理中的算法实现

      本文链接:https://www.haomeiwen.com/subject/kmnnehtx.html