📅  最后修改于: 2023-12-03 15:10:17.107000             🧑  作者: Mango
数字图像处理是计算机视觉的重要分支之一,其主要目的是对数字图像进行分析和处理,从而获得更有意义和实用的信息。
数字图像是由像素点组成的,每个像素点都有一个值来表示它的亮度或颜色。常见的图像格式有bmp、jpg、png等,不同的格式对像素点的存储方式有所不同。在计算机中,数字图像一般被表示为二维数组,每个元素表示一个像素点,数组的维度对应图像的宽和高。
import cv2
# 读取图像文件
img = cv2.imread("image.jpg")
# 获取图像宽高及通道数
rows, cols, channels = img.shape
# 输出像素点的值
print(img[100, 100])
数字图像处理最常见的任务是对图像进行一定的处理以获得更好的结果。常见的图像处理操作包括图像增强、噪声去除、边缘检测等。
图像增强旨在通过各种技术提高图像的视觉质量,例如亮度、对比度、清晰度等。常见的增强技术包括灰度变换、直方图均衡化、滤波等。
# 灰度变换
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 直方图均衡化
equ = cv2.equalizeHist(gray)
# 模糊滤波
blur = cv2.GaussianBlur(img, (5, 5), 0)
图像中常常包含各种噪声,这些噪声会干扰图像的信息,因此需要对图像进行去噪处理。常见的去噪技术包括中值滤波、双边滤波等。
# 中值滤波
blur = cv2.medianBlur(img, 5)
# 双边滤波
blur = cv2.bilateralFilter(img, 9, 75, 75)
边缘检测是指在图像中检测出物体边缘的过程,常见的边缘检测算法有Sobel算子、Canny算子等。
# Sobel算子
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
x = cv2.Sobel(gray, cv2.CV_16S, 1, 0)
y = cv2.Sobel(gray, cv2.CV_16S, 0, 1)
absx = cv2.convertScaleAbs(x)
absy = cv2.convertScaleAbs(y)
sobel = cv2.addWeighted(absx, 0.5, absy, 0.5, 0)
# Canny算子
edges = cv2.Canny(img, 100, 200)
数字图像处理是计算机视觉中的重要分支,这里我们介绍了数字图像的表示和处理方法,以及常见的图像增强、噪声去除和边缘检测技术。在实际的图像处理任务中,常常需要结合多种技术才能得到最好的结果。