文档章节

直方图正规化

o
 osc_x4h57ch8
发布于 2018/04/24 11:49
字数 352
阅读 0
收藏 0

精选30+云产品,助力企业轻松上云!>>>

概念和原理

直方图正规化是一种自动选取 a 和 b 的值的线性变换方法

假设输入图像为 I,高为 H、 宽为 W, I (r, c) 代表 I 的第 r 行第 c 列的灰度值, 将I中出现的最小灰度级记为Imin, 最大灰度级记为Imax,即 I (r, c) ∈[ I min, Imax], 为使输出图像 O 的灰度级范围为[ Omin, Omax], I (r, c) 和 O( r, c) 做以下映射关系: $O(r,c) = \frac{O_{max}-O_{min}}{I_{max}-I_{min}}(I(r, c) - I_{min}) + O_{min}$ 其中, $a=\frac{O_{max}-O_{min}}{I_{max}-I_{min}}$, $b=O_{min}-\frac{O_{max}-O_{min}}{I_{max}-I_{min}}*I_{min}$

代码

1、若输入是 8 位图 ,一般设置 O_min = 0,O_max = 255 2、若输入的是归一化的图像,一般设置 O_min = 0,O_max = 1

# !/usr/bin/env python
# -*-encoding: utf-8-*-
# author:LiYanwei
# version:0.1

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


def histNormalized(InputImage,O_min = 0,O_max = 255):
    I_min = np.min(InputImage)
    I_max = np.max(InputImage)
    rows,cols = InputImage.shape
    #输出图像
    OutputImage = np.zeros(InputImage.shape,np.float32)
    #输出图像的映射
    cofficient = float(O_max - O_min)/float(I_max - I_min)
    for r in range(rows):
        for c in range(cols):
            OutputImage[r][c] = cofficient*( InputImage[r][c] - I_min) + O_min
    return OutputImage


if __name__ =="__main__":
    image = cv2.imread('img3.jpg', cv2.IMREAD_GRAYSCALE)
    #显示原图
    cv2.imshow("image", image)
    #直方图正规化
    histNormResult = histNormalized(image)
    #数据类型转换,灰度级显示
    histNormResult = np.round(histNormResult)
    histNormResult = histNormResult.astype(np.uint8)
    #显示直方图正规化的图片
    cv2.imshow("histNormlized", histNormResult)
    cv2.imwrite("histNormResult.jpg", histNormResult)
o
粉丝 0
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。

暂无文章

Kotlin Class「T」

fun <T> gotoMainPage( context: Activity, postId: String, mainActivity: Class<T> ) { val intent = Intent(context, ADSplash......

osc_qatrfv06
17分钟前
0
0
小赢科技2020年一季报:由盈转亏1.96亿,M3以下贷款逾期率翻倍达6.71%

来源 | 新金融一线 北京时间6月29日,美股上市互金平台小赢科技公布了今年一季报未经审计的财务业绩报告。财报显示,该公司2020财年第一财季净营收同比下降31.9%至5.29亿元(人民币,下同);...

镭射财经
18分钟前
5
0
kotlin实现单例

/** * 功能:单例实现 */class Singleton private constructor() { companion object { val instance by lazy(mode = LazyThreadSafetyMode.SYNCHRONIZED) { Si......

osc_5nscij7v
18分钟前
7
0
七月算法机器学习 11 决策树、随机森林、 adaboost

目录 主要内容 决策树 信息增益 三种决策树学习算法 决策树的例子 决策树的过拟合 Bootstraping Bagging的策略 随机森林 提升的概念 Adaboost 举例 主要内容 决策树  决策树学习采用的是自...

osc_2718ydlo
19分钟前
10
0
支持千万人次毫秒级交易,360金融的系统性能如何做到?

提到“系统性能”问题,便立即联想到刚刚过去的“618”购物狂欢,电商公司在面对高密集度并发交易行为时,依托强大的系统性能以保持用户在网购与支付过程中平台的系统稳定性的极致案例。系统...

osc_jrhexi1r
21分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部