• python中的图像增强技术


    关键词:- 对数变换、幂律变换、图像增强、对比度拉伸

    数字图像处理 (DIP) 对不同类别的图像执行各种操作,例如图像增强、图像分析、图像压缩、图像变换等。

    图像增强用于对图像进行操作,以提取用户识别的所需和重要的关键特征,例如:调整图像的对比度值。

    DIP的基本步骤

    因此,在本博客中,我们将讨论图像锐化/增强技术。

    图像锐化和恢复有助于通过关注已识别的特征、调整明暗区域之间的对比度、减少噪点、升级相机焦距、减少运动模糊等来创建更好的图像。

    图像锐化明确用于改善图像描述,例如边界、角落、对比度、边缘、强度等。

    以下是一些图像预处理技术,用于通过观察其邻域像素值来修改当前像素的强度值。

    对比拉伸

    对比拉伸称为归一化,用于拉伸强度值的范围以提高图像的对比度。

    Python/OpenCV 可以通过使用 min_max 归一化的 cv2.normalize() 方法进行对比度拉伸。

    1. import cv2
    2. import numpy as np
    3. read image
    4. img = cv2.imread("messi.jpg")
    5. # normalize float versions
    6. norm_img1 = cv2.normalize(img, None, alpha=0, beta=1, norm_type=cv2.NORM_MINMAX, dtype=cv2.CV_32F)
    7. # scale to uint8
    8. norm_img1 = (255*norm_img1).astype(np.uint8)
    9. cv2.imshow('original',img)
    10. cv2.imshow('normalized1',norm_img1)
    11. cv2.waitKey(0)
    12. cv2.destroyAllWindows()

    图像阈值

    图像阈值用于将对象分割成两类,即前景和背景。全局图像阈值由 Otsu 方法完成。

    阈值类型

    1. cv2.THRESH_BINARY

    2. cv2.THRESH_BINARY_INVY

    3. cv2.THRESH_TRUNCY

    4. cv2.THRESH_TOZEROY

    5. cv2.THRESH_TOZERO_INVY

    img

    全局阈值

    对数变换

    对数变换用于将图像的每个像素值替换为其对数值,以增强较低强度值的对比度。它有助于缩小较亮的像素值范围并扩大暗像素。当需要减少图像的偏度分布以获得更好的解释时,可以应用此转换。

    1. import cv2
    2. import numpy as np
    3. import matplotlib.pyplot as plt
    4. Read an image
    5. image = cv2.imread('baby.jpg')
    6. # Apply log transformation method
    7. = 255 / np.log(1 + np.max(image))
    8. log_image = c * (np.log(image + 1))
    9. # Specify the data type so that
    10. # float value will be converted to int
    11. log_image = np.array(log_image, dtype = np.uint8)
    12. Display both images
    13. plt.imshow(image)
    14. plt.show()
    15. plt.imshow(log_image)
    16. plt.show()

    对数变换

    幂律变换(伽马变换)

    幂律变换用于从较亮图像到较暗图像突出显示对象,可以通过以下表达式使用:s = c × r^ γ ,其中 s 和 r 分别是输出和输入图像的像素值,c 是常数值,γ称为伽马值。为了减少不同强度值的计算机显示器显示问题,在此转换中使用了不同的伽马值

    1. import numpy as np
    2. import cv2
    3. # Load the image
    4. img = cv2.imread('baby.jpg')
    5. # Apply Gamma=0.4 on the normalised image and then multiply by scaling constant (For 8 bit, c=255)
    6. gamma_point_four = np.array(255*(img/255)**0.4,dtype='uint8')
    7. # Similarly, Apply Gamma=0.8
    8. gamma_point_eight = np.array(255*(img/255)**0.8,dtype='uint8')
    9. Display the images in subplots
    10. img3 = cv2.hconcat([gamma_point_four,gamma_point_eight])
    11. cv2.imshow('a2',img3)
    12. cv2.waitKey(0)

    希望你喜欢阅读这篇文章,希望它能帮助你了解不同类型的图像增强技术。

    【python学习】
    学Python的伙伴,欢迎加入新的交流【君羊】:740587468
    一起探讨编程知识,成为大神,群里还有软件安装包,实战案例、学习资料

  • 相关阅读:
    Educoder Spring 初体验
    Python学习之索引与切片
    (十六)模板与泛型编程
    2023年【熔化焊接与热切割】考试试卷及熔化焊接与热切割试题及解析
    Unity关于GL绘制和Gizmos绘制的Matrix问题。
    java基础13
    C语言学习之路(基础篇)—— 指针(下)
    多媒体前端技术入门指南
    PostgreSQL技巧之ShareLock死锁处理
    使用 Arduino 和电位器控制直流电机速度
  • 原文地址:https://blog.csdn.net/weixin_56659172/article/details/127844615