opencv幂律变换
时间: 2023-09-25 22:15:46 浏览: 87
在OpenCV中,幂律变换(Gamma Correction)用于调整图像的亮度和对比度。幂律变换通过修改像素值的幂次关系来实现图像的亮度调整。幂律变换的公式为:out = c * (in^g) ,其中in是输入像素值,out是输出像素值,c是常数,g是幂次值。
在幂律变换中,如果g>1,则会使图像变暗;如果g<1,则会使图像变亮。幂律变换的操作步骤如下:
1. 读取图像
2. 将图像数据转换为浮点型,并将像素值缩放到0~1的范围内
3. 根据公式进行幂律变换,计算出新的像素值
4. 将像素值重新缩放到0~255的范围内,并转换为无符号整型
5. 显示和保存结果图像
例如,我们可以使用以下代码在OpenCV中实现幂律变换:
```python
import cv2
import numpy as np
def gamma_correction(img, c=1, g=2.2):
out = img.copy()
out /= 255.
out = (1/c * out) ** (1/g)
out *= 255
out = out.astype(np.uint8)
return out
# 读取图像
img = cv2.imread("imori_gamma.jpg").astype(np.float)
# 调用幂律变换函数
out = gamma_correction(img)
# 保存和显示结果图像
cv2.imwrite("out.jpg", out)
cv2.imshow("result", out)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
通过调整参数c和g,可以获得不同的幂律变换效果。其中,参数c用于控制亮度的缩放比例,参数g用于调整图像的对比度。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* [Opencv学习笔记 常用函数、基础知识二](https://blog.csdn.net/bashendixie5/article/details/108922048)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
- *3* [三、使用OpenCV自己实现拉伸低对比度图像:幂率变换、直方图均衡](https://blog.csdn.net/qq_34451909/article/details/107605527)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]