0
点赞
收藏
分享

微信扫一扫

华为AI认证_图像处理实验(图像预处理)

陈情雅雅 2022-05-06 阅读 57

实验一:灰度变化

代码:

import cv2
import numpy as np

def liner_trans(org,k,b=0):
    """
    灰度变化
    :param img:
    :param k: k>1时 实现灰度数值的拉伸,0<k<1 时 实现灰度数值的压缩,
              k=-1 b=255 实现灰度数值的反转
    :param b:灰度值
    :return:
    """
    # 计算灰度的线性变化映射表
    translist=[(np.float32(x)*k+b) for x in range(256)]
    print("映射表",translist)

    # 需要转化为np.array
    transTable=np.array(translist)

    # 将查出[0,255]的灰度值进行调整,并指定数据类型为uint8
    transTable[transTable > 255] = 255
    transTable[transTable < 0] = 0

    transTable = np.round(transTable).astype(np.uint8)
    # 使用openCV的look up table 修改图片的灰度值
    return cv2.LUT(org,transTable)

if __name__ == '__main__':
    im=cv2.imread('data/mok.png')
    cv2.imshow('org',im)

    # 反转
    # img=liner_trans(im,-1,255)
    # cv2.imshow("invsion",img)

    # 灰度拉伸
    # img = liner_trans(im, 1.2)
    # cv2.imshow("graystretch", img)

    # 灰度压缩
    img = liner_trans(im, 0.8)
    cv2.imshow("graycompress", img)

    cv2.waitKey()
    cv2.destroyAllWindows()

运行:

1.1 灰度反转

# 反转
img=liner_trans(im,-1,255)
cv2.imshow("invsion",img)

1.2 灰度拉伸

# 灰度拉伸
img = liner_trans(im, 1.2)
cv2.imshow("graystretch", img)

 

1.3 灰度压缩

# 灰度压缩
img = liner_trans(im, 0.8)
cv2.imshow("graycompress", img)

 1.4 gamma矫正

代码:

def gamma_tarns(img,gamma):
    """
    伽马矫正
    :param img:
    :param gamma: 伽马值
    :return:
    """
    #先归一化到1 做伽马计算 再还原到[0,255]
    gammaList=[np.power(x/255.0,gamma)*255.0 for x in range(256)]

    #将数据转换为np.array 并且指定数据类型为uint8
    gammaTable=np.round(np.array(gammaList).astype(np.uint8))

    print(gammaTable)
    # 使用openCV 的look up table函数修改图像的灰度值
    return cv2.LUT(img,gammaTable)

1.4.1 使用伽马值为0.5的变化 实现对暗部的压缩 亮部的拉伸

 

1.4.2 使用伽马值为2的变化 实现对亮部的压缩 暗部的拉伸

 

 实验二:直方图

举报

相关推荐

0 条评论