美文网首页
计算机视觉传统技术-直方图均衡(2)

计算机视觉传统技术-直方图均衡(2)

作者: Kyle_1091 | 来源:发表于2020-08-10 22:23 被阅读0次

嗯可以敲代码了。首先这个算法是这样,我们首先要对原图片计算一个概率值。这个概率值反映了原图片中某个像素值的占比。比如之前的5个像素点例子,[122,122,141,155,177] 那P(122) = 2/5, 这个概率就反映了原图片中的每个像素点的分布情况。
然后我们由像素值从小到大的顺序,计算每个像素点的cdf,比如cdf(122) = 2/5, cdf(155) = p(122)+p(141)+p(155) = 4/5。计算cdf的原因是什么呢,是为了保持数据的顺序分布不被搞乱。
也就是说,整个算法的粗糙逻辑就是,我从原图片中,提取出像素点的大小逻辑,也就是cdf,然后新图片只要保持cdf,也就是这个大小逻辑跟原图片一样,这个新图片就不会乱走样。
所以得出原图片的cdf,就是生成图片的cdf。
然后用原图片的cdf*255/总像素点数就可以生成增强图片了。
代码具体如下,有问题可以评论留言我会回复的。

import numpy as np
import cv2 as cv
import matplotlib.pyplot as plt

#读图片
data = cv.imread('3.PNG')
data = cv.cvtColor(data, cv.COLOR_BGR2GRAY)
n = data.shape[0]*data.shape[1]
plt.imshow(data)
#计算图片的每个像素值都有多少像素点
unique,count=np.unique(data,return_counts=True)
data_count=dict(zip(unique,count))
#生成一个字典,每个像素值都对应一个选中它这个像素点的概率
pik = {key:data_count[key]/n for key in data_count}

#计算原图片的cdf函数
cdf_a = cdf_calculator(pik)

num_grayvalue = len(pik.keys())
#生成目标图片对比度映射的字典
dict_vb = {key : vb_calculator(cdf_a[key],n , num_grayvalue) for key in pik }
#映射对比度,生成图片
recons_img = data.copy()
recons_img = recons_img.astype(float)
for row in range(data.shape[0]):
    for col in range(data.shape[1]):
        recons_img[row][col] = dict_vb[data[row][col]]

plt.imshow(recons_img)

#cdf计算方法
def cdf_calculator(pik):
    cdf = pik.copy()
    first_item_key = list(pik)[0]
    for key in pik:
        item_key = key.copy()
        while item_key >= first_item_key:
            cdf[key] += pik[item_key]
            item_key -= 1
            while item_key not in pik.keys() and item_key > first_item_key:
                item_key -= 1
    return cdf

def vb_calculator(cdf_a, n, num_grayvalue):
    vb = (cdf_a*num_grayvalue)/n
    return vb

相关文章

  • 计算机视觉传统技术-直方图均衡(2)

    嗯可以敲代码了。首先这个算法是这样,我们首先要对原图片计算一个概率值。这个概率值反映了原图片中某个像素值的占比。比...

  • 计算机视觉传统技术-直方图均衡

    呀上一篇一年后也没继续写第二篇,最近又开始想写博文了,希望能帮助我加深记忆吧。因为自己确实经常忘记学过的东西。 现...

  • OpenCV-Python学习(十一):直方图

    目录: 1.绘制直方图1)一维直方图2)2D直方图 2.直方图均衡化1)全局直方图均衡化2)CLAHE(限制对比度...

  • 四、OpenCV+TensorFlow 入门人工智能图像美化处理

    彩色图片直方图 灰度直方图源码 彩色直方图源码 直方图均衡化 1.灰度 1.1灰度直方图均衡化源码 2.彩色 2....

  • 9.4直方图均衡化

    原图 原图直方图 灰度图 灰度直方图 均衡灰度图 均衡灰度直方图 均衡彩色图 均衡彩色直方图

  • 47. 直方图均衡化

    本文解释灰度直方图均衡化、彩色直方图均衡化和YUV均衡化效果 灰度直方图均衡化 效果如下: 彩色直方图均衡化 效果...

  • 直方图均衡化

    直方图均衡化的介绍 直方图均衡化是一种简单有效的图像增强技术,通过改变图像的直方图来改变图像中各像素的灰度,主要用...

  • 直方图匹配

    之前我们介绍过直方图均衡化。直方图匹配的核心思想就是在应用直方图的均衡化。 和之前直方图均衡化一样,直方图的匹配本...

  • Metal图像处理——直方图均衡化

    Metal图像处理——直方图均衡化 Metal图像处理——直方图均衡化

  • 计算机视觉基础 - 边缘和轮廓检测

    深度学习以外的视觉算法 尽管深度学习为基础的计算机视觉技术攻克了很多传统算法的难题,但了解这些传统的视觉算法依然是...

网友评论

      本文标题:计算机视觉传统技术-直方图均衡(2)

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