网络

教育改变生活

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 977|回复: 0
打印 上一主题 下一主题

Python基于直方图正规化实现图片加强

[复制链接]

97

主题

98

帖子

447

积分

版主

Rank: 7Rank: 7Rank: 7

积分
447
跳转到指定楼层
楼主
发表于 2020-5-27 15:42:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
将图像O中的最小灰度级记为Omin,最大灰度级记为Omax,假如输出的图像P的灰度级范围为[Pmin,Pmax],
则O 与 P的关系为:
O(r,c)=((Pmax−Pmin)/(Omax−Omin))*(O(r,c)−Omin)+Pmin
其中P(r,c)就代表P的第r行第c列的灰度值。这个过程就是直方图的正规化。
我们一般令P的范围是[0,255],所以直方图的正规化是在求a,b变换的值的方法,我们可以得到:
a=(Pmax−Pmin)/(Omax−Omin),b=Pmin−(Pmax−Pmin)/(Omax−Omin)*Omin
下面我们使用OpenCV来实现上面的理论:

import cv2
import numpy as np
import sys

img = cv2.imread("D://python/p1.jpg",cv2.IMREAD_GRAYSCALE)
Maximg = np.max(img)
Minimg = np.min(img)
Omin,Omax = 0,255#
a = float(Omax - Omin)/(Maximg - Minimg)
b = Omin - a*Minimg

O = a*img + b
O = O.astype(np.uint8)

cv2.imshow('img',img)
cv2.imshow('enhance',O)
cv2.waitKey(0)
cv2.destroyAllWindows()

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

WEB前端

QQ|手机版|小黑屋|金桨网|助学堂  咨询请联系站长。

GMT+8, 2024-12-22 11:45 , Processed in 0.033172 second(s), 22 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表