计算机视觉智能中医(五):舌象图片亮度的自适应调节

返回至系列文章导航博客


在这里插入图片描述

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)

在这里插入图片描述

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蓝色是天

您的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值