python中的图像增强技术

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

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

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

python中的图像增强技术_第1张图片

DIP的基本步骤

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

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

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

python中的图像增强技术_第2张图片

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

对比拉伸

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

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

import cv2
import numpy as np

# read image
img = cv2.imread("messi.jpg")

# normalize float versions
norm_img1 = cv2.normalize(img, None, alpha=0, beta=1, norm_type=cv2.NORM_MINMAX, dtype=cv2.CV_32F)

# scale to uint8
norm_img1 = (255*norm_img1).astype(np.uint8)
cv2.imshow('original',img)
cv2.imshow('normalized1',norm_img1)
cv2.waitKey(0)
cv2.destroyAllWindows()

python中的图像增强技术_第3张图片

图像阈值

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

阈值类型

  1. cv2.THRESH_BINARY

  2. cv2.THRESH_BINARY_INVY

  3. cv2.THRESH_TRUNCY

  4. cv2.THRESH_TOZEROY

  5. cv2.THRESH_TOZERO_INVY

img

python中的图像增强技术_第4张图片

全局阈值

对数变换

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

import cv2
import numpy as np
import matplotlib.pyplot as plt

# Read an image
image = cv2.imread('baby.jpg')

# Apply log transformation method
c = 255 / np.log(1 + np.max(image))
log_image = c * (np.log(image + 1))

# Specify the data type so that
# float value will be converted to int
log_image = np.array(log_image, dtype = np.uint8)

# Display both images
plt.imshow(image)
plt.show()
plt.imshow(log_image)
plt.show()

python中的图像增强技术_第5张图片

对数变换

幂律变换(伽马变换)

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

import numpy as np
import cv2

# Load the image
img = cv2.imread('baby.jpg')

# Apply Gamma=0.4 on the normalised image and then multiply by scaling constant (For 8 bit, c=255)
gamma_point_four = np.array(255*(img/255)**0.4,dtype='uint8')

# Similarly, Apply Gamma=0.8
gamma_point_eight = np.array(255*(img/255)**0.8,dtype='uint8')

# Display the images in subplots
img3 = cv2.hconcat([gamma_point_four,gamma_point_eight])
cv2.imshow('a2',img3)
cv2.waitKey(0)

python中的图像增强技术_第6张图片

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

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

你可能感兴趣的:(python,opencv,计算机视觉)