欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

灰度值线性变换

程序员文章站 2023-12-25 22:29:09
...

原理

假设输入图像为I,宽为W、高为H,输出图像记为O,图像的线性变换可以利用以下公式定义:
\[O(r,c) = a*I(r,c) + b, 0 \leq r< H, 0 \leq c < W\]
当a=1,b=0时,O为I的一个副本;如果a>1,则输出图像O的对比度比I有所增大;如果a<1,则O的对比度比I有所 减小。 而b值的改变,影响的是输出图像的亮度,当b>0时,亮度增加; 当b<0时,亮度减小。

代码

# !/usr/bin/env python
# -*-encoding: utf-8-*-
# author:LiYanwei
# version:0.1


import cv2
import numpy as np

if __name__ =="__main__":
    image = cv2.imread('img1.jpg', cv2.IMREAD_GRAYSCALE)
    MAX_VALUE = 120
    value = 120

    #调整对比度后,图像的效果显示窗口
    cv2.namedWindow("contrast",cv2.WND_PROP_AUTOSIZE)

    #调整系数,观察图像的变化
    def callback_contrast(_value):
        #通过线性运算,调整图像对比度
        a = float(_value)/40.0
        contrastImage = a*image
        contrastImage[contrastImage > 255] = 255
        contrastImage = np.round(contrastImage)
        contrastImage = contrastImage.astype(np.uint8)
        cv2.imshow("contrast", contrastImage)
        cv2.imwrite("contrast.jpg", contrastImage)

    callback_contrast(value)
    cv2.createTrackbar("value", "contrast", value, MAX_VALUE, callback_contrast)
    cv2.waitKey(0)
    cv2.destroyAllWindows()

上一篇:

下一篇: