舌象图片自适应调节——gamma校正算法(五)

简介: 舌象图片自适应调节——gamma校正算法(五)

1 简介


在中医智能舌诊项目中,用户使用移动设备采集图片。不同采集设备获取的图像像素差异非常大,并且用户采集图像时所处的环境并不固定,因此用户舌象图片的光照强度很有可能不能达到中e诊舌象数据库中舌象图片统一的光照强度。若是如此,用户进行舌象诊断的结果准确性将会大打折扣。因此,在舌象诊断前进行亮度自动调节是非常有必要的。


2 实现细节


本小组利用伽马校正(Gamma Correction)进行舌象图片亮度的自动校正。伽马校正又叫伽马非线性化或伽马编码,是用来针对影片或是影响系统里对于光线的辉度或是三色刺激值所进行的非线性的运算或反运算。具体公式讲解与示意图如下:


(1)当γ<1时,在低灰度值区域内,动态范围变大,进而图像对比度增强;在高灰度值区域内,动态范围变小,图像对比度降低。

(2)γ>1时,低灰度值区域的动态范围变小,高灰度值区域在动态范围变大,降低了低灰度值区域对比度,提高了高灰度值区域图像对比度。同时,图像整体的灰度值变小。


在代码中首先将图像的所有像素值进行归一化,后进行预补偿处理,即根据公式求出像素归一化后的数据以1/gamma为指数的对应值。最后进行反归一化处理,将预补偿的数值反变换为0~255之间的整数值。

本小组利用Python中的opencv库对舌象图片进行处理并编写算法代码实现舌象图片自适应亮度校正功能。功能实现效果如下图所示:


3 代码

import cv2
import numpy as np
import math
def gamma_trans(img, gamma):  # gamma函数处理
    gamma_table = [np.power(x / 255.0, gamma) * 255.0 for x in range(256)]  # 建立映射表
    gamma_table = np.round(np.array(gamma_table)).astype(np.uint8)  # 颜色值为整数
    return cv2.LUT(img, gamma_table)  # 图片颜色查表。另外可以根据光强(颜色)均匀化原则设计自适应算法。
def nothing(x):
    pass
file_path = r"E:\ITEM_TIME\project\Tongue\JPEGImages\637.jpg"
img_gray=cv2.imread(file_path,0)   # 灰度图读取,用于计算gamma值
img = cv2.imread(file_path)    # 原图读取
mean = np.mean(img_gray)
gamma_val = math.log10(0.5)/math.log10(mean/255)    # 公式计算gamma
image_gamma_correct = gamma_trans(img, gamma_val)   # gamma变换
# print(mean,np.mean(image_gamma_correct))
cv2.imwrite(r'C:\Users\13267\Desktop\test.jpg',img)
#cv2.imshow('image_raw', img)
#cv2.imshow('image_gamma', image_gamma_correct)
#cv2.waitKey(0)


相关文章
|
6月前
|
算法
基于最小二乘正弦拟合算法的信号校正matlab仿真,校正幅度,频率以及时钟误差,输出SNDR,SFDR,ENOB指标
基于最小二乘正弦拟合算法的信号校正matlab仿真,校正幅度,频率以及时钟误差,输出SNDR,SFDR,ENOB指标
|
6月前
|
文字识别 算法 计算机视觉
图像倾斜校正算法的MATLAB实现:图像倾斜角检测及校正
图像倾斜校正算法的MATLAB实现:图像倾斜角检测及校正
|
11月前
|
存储 算法 数据格式
基于LUT查找表方法的图像gamma校正算法FPGA实现,包括tb测试文件和MATLAB辅助验证
基于LUT查找表方法的图像gamma校正算法FPGA实现,包括tb测试文件和MATLAB辅助验证
|
算法 Linux Python
SGAT丨基于R语言tidyverse的vcf转txt文件算法,SNP位点判断与自动校正,染色体格式替换
SGAT丨基于R语言tidyverse的vcf转txt文件算法,SNP位点判断与自动校正,染色体格式替换
|
算法 安全 机器人
Baumer工业相机堡盟工业相机如何联合BGAPISDK和OpenCV实现图像的伽马变换校正算法增强(C++)
Baumer工业相机堡盟工业相机如何联合BGAPISDK和OpenCV实现图像的伽马变换校正算法增强(C++)
212 0
|
算法
大气湍流自适应光学校正算法matlab仿真,包括涡旋光束,大气湍流影响,不同轨道角动量OAM态之间的串扰,校正等
大气湍流自适应光学校正算法matlab仿真,包括涡旋光束,大气湍流影响,不同轨道角动量OAM态之间的串扰,校正等
549 0
大气湍流自适应光学校正算法matlab仿真,包括涡旋光束,大气湍流影响,不同轨道角动量OAM态之间的串扰,校正等
|
算法
基于参考辐射源/定标的校正算法(四)
基于曲线拟合的定标算法
124 0
基于参考辐射源/定标的校正算法(四)
|
算法
基于参考辐射源/定标的校正算法(三)
只有探测器的响应满足线性响应的条件下,两点定标校正算法才能取得较好的效果。而在实际情况下,探测器单元的响应通常呈非线性,随着入射辐照度范围的加大,探测器响应的线性度往往会变差。此时,若采用两点法进行校正必然会引入线性近似误差。
112 0
基于参考辐射源/定标的校正算法(三)
|
算法
基于参考辐射源/定标的校正算法(二)
两点定标算法较一点定标在效果上有了较大的提高,并且依然有着较低的算法复杂度。因此,其在红外探测器的工程生产中被大量使用。两点定标算法同一点定标算法的原理基本相同,只是通过两个定标点来计算校正参数。
193 0
基于参考辐射源/定标的校正算法(二)
|
人工智能 算法 BI
基于参考辐射源/定标的校正算法(一)
一种基于场景的非均匀校正算法,补充一下更加简单,容易工程化实现的基于参考辐射源的校正算法,也叫基于定标的校正算法。
182 0
基于参考辐射源/定标的校正算法(一)