【问题标题】:Image enhancement with python and OpenCV使用 python 和 OpenCV 进行图像增强
【发布时间】:2018-04-14 14:36:44
【问题描述】:

我试图通过首先将RGB 颜色空间转换为YUV 颜色空间并将直方图均衡化为Y 值来增强我的图像。但是,输出图像看起来并不好。

对于直方图均衡,我使用Wikipedia上的方法。

这是输入图像:

这是输出图像:

我真的不知道问题出在哪里,谁能帮助我或给我一些提示?

下面是我的代码,

import cv2
import numpy as np

img = cv2.imread('/Users/simon/Documents/DIP/Homework_3/input4.bmp')
shape = img.shape

Y_origin_hist = [0] * 256
U_origin = [[0 for i in range(0, shape[1])] for j in range(0, shape[0])] 
V_origin = [[0 for i in range(0, shape[1])] for j in range(0, shape[0])] 

Y_hist = [0] * 256

# Read RGB value and calculate YUV value
for i in range(0, shape[0]) :
    for j in range(0, shape[1]) :
        px = img[i,j]
        y = int(0.299 * px[2] + 0.587 * px[1] + 0.114 * px[0])
        u = int(-0.169 * px[2] - 0.331 * px[1] + 0.5 * px[0]) + 128
        v = int(0.5 * px[2] - 0.419 * px[1] - 0.081 * px[0]) + 128
        Y_origin_hist[y] = Y_origin_hist[y] + 1
        U_origin[i][j] = u
        V_origin[i][j] = v

# Histogram equalization
for i in range(0, 256) :
    Y_hist[i] = int(((sum(Y_origin_hist[0:i]) - min(Y_origin_hist) - 1) * 255) / ((shape[0] * shape[1]) - 1))

# Write back to RGB value
for i in range(0, shape[0]) :
    for j in range(0, shape[1]) :
        px = img[i,j]
        px[0] = int(Y_hist[px[0]] + 1.77216 * (U_origin[i][j] - 128) + 0.00099 * (V_origin[i][j] - 128))
        px[1] = int(Y_hist[px[1]] - 0.3437 * (U_origin[i][j] - 128) - 0.71417 * (V_origin[i][j] - 128))
        px[2] = int(Y_hist[px[2]] - 0.00093 * (U_origin[i][j] - 128) + 1.401687 * (V_origin[i][j] - 128))

cv2.imwrite('/Users/simon/Documents/DIP/Homework_3/output4.bmp', img)

【问题讨论】:

  • 看起来是溢出问题。您需要将 px[] 剪辑到 0..255 范围内。另外,我不确定使用原始 px[] 值来索引 LUT 是否有意义,并且每次都添加色差组件?

标签: python image-processing rgb yuv


【解决方案1】:

对于 C++ 中的 OpenCV,+ 和 - 运算符被重载,它们会自动防止溢出。但是,在使用 Python 时情况并非如此。因此,在进行数学运算时,您应该使用 cv2.add()cv2.subtract() 以获得与使用 C++ 相同的结果。

【讨论】:

    猜你喜欢
    • 2014-05-09
    • 1970-01-01
    • 2015-04-24
    • 2014-07-23
    • 2018-06-20
    • 1970-01-01
    • 2020-11-24
    • 2019-11-10
    • 2013-10-19
    相关资源
    最近更新 更多