【FPGA图像处理实战】- 图像伽玛校正

本文转载自:FPGA入门到精通

Gamma校正是一种在图像处理中广泛使用的技术,用以调整图像的亮度和对比度,改善图像质量。

本文将详细介绍一下Gamma校正,包括Gamma校正的定义、python实现以及FPGA实现。

一、Gamma校正

1、为什么会有Gamma校正?

Gamma校正是基于人眼对亮度感知非线性的特性,人眼对亮度的敏感度随着亮度的增加而减少,也就是说,当图像的亮度较低时,人眼对亮度的变化更为敏感,如下图所示。

2、Gamma校正公式

O = C * I^γ

其中C和γ都是常数,C为亮度和对比度缩放系数,通常取值为1,γ为gamma值,I为归一化的值,范围为【0~1】,O为输出值。

不同γ的曲线如下图:

从图中可以看出:

(1)当γ小于1时,会拉伸图像中灰度级较低的区域,同时会压缩灰度级较高的部分,使图像的暗部更亮,亮部更暗。

(2)当γ大于1时,会拉伸图像中灰度级较高的区域,同时会压缩灰度级较低的部分,使图像的暗部更暗,亮部更亮。

二、Python实现

1、python代码实现

import cv2
import numpy as np

img = cv2.imread('1280_720.bmp')

# 幂函数

def gamma_f1(img, gamma=2.0):
gamma_corrected = np.array(
255 * np.power((img / 255), gamma), dtype='uint8')
return gamma_corrected

# 查表法,速度快

def gamma_f2(img, gamma=2.0):
table = np.power(np.arange(256)/255.0, gamma)*255
gamma_corrected = cv2.LUT(img, table.astype(np.uint8))
return gamma_corrected

img_gamma1 = gamma_f1(img)

img_gamma2 = gamma_f1(img, 1/2.2)

cv2.namedWindow("original", 0)
cv2.resizeWindow("original", 300, 180) # 设置窗口大小
cv2.namedWindow("gamma2.2", 0)
cv2.resizeWindow("gamma2.2", 300, 180) # 设置窗口大小
cv2.namedWindow("gamma1/2.2", 0)
cv2.resizeWindow("gamma1/2.2", 300, 180) # 设置窗口大小
cv2.imshow('original', img)
cv2.imshow('gamma2.2', img_gamma1)
cv2.imshow('gamma1/2.2', img_gamma2)

cv2.waitKey(0)
cv2.destroyAllWindows()

2、效果

三、FPGA实现

Gamma校正是一个幂函数,这就涉及到复杂函数的运算,RGB值的输入范围为0~255,这里直接采用查表法实现。

借助python生成查表。

//python 代码 生成gamma=1/2.2
for i in range(0, 256):
print(' 8\'d{}: gamma2_2_inv = {};'.format(
i, int(255 * np.power((i / 255), 1/2.2) + 0.5)))

//python 代码 生成gamma=2.2
for i in range(0, 256):
print(' 8\'d{}: gamma2_2 = {};'.format(
i, int(255 * np.power((i / 255), 2.2) + 0.5)))

function [7:0] gamma2_2;
input [7:0] val;
begin
case(val)
8'd0: gamma2_2 = 0;
8'd1: gamma2_2 = 0;
8'd2: gamma2_2 = 0;
....
8'd255: gamma2_2 = 255;
endcase
end
endfunction

function [7:0] gamma2_2_inv;
input [7:0] val;
begin
case(val)
8'd0: gamma2_2_inv = 0;
8'd1: gamma2_2_inv = 21;
...
8'd255: gamma2_2_inv = 255;
endcase
end
endfunction

根据以上的分析,可以轻松完成FPGA实现。

仿真测试效果

最新文章

最新文章