图像处理基础

图像的基本表示方法

二值图像

二值图像是指只含有黑色和白色的图像,白色的像素点处理为“1”,黑色的像素点处理为“0”

灰度图像

计算机会将灰度处理为256个灰度级,用数值区间[0,255]来表示

彩色图像

在RGB色彩空间中,图像通道的顺序是R→G→B ,但是在OpenCV中,通道的顺序是B→G→R

  1. B 第一个通道保存B通道的信息
  2. G 第二个通道保存G通道的信息
  3. R 第三个通道保存R通道的信息

图像的基本操作

图像的读取

retval = cv2.imread(filename[, flags])
● retval 是返回值,其值是读取到的图像
● filename 是要读取图像的完整文件名
● flags是读取标记,用来控制读取文件的类型


image-20240306110207067.png

图像的显示

None = cv2.imshow(window, image)
● window是窗口的名字
● image是要显示的图像

waitKey()函数用来等待按键
retval= cv2.waitKey([delay])
● retval是返回值
● delay表示等待键盘触发的时间,单位是ms。当该值为负数或0时表示无限等待,默认值为0

destroyAllWindows函数用来释放所有窗口
None = cv2.destroyAllWindows()

图像的保存

retval= cv2.imwrite(filename, img[, params])
● retval是返回值
● filename是要保存的图像的完整路径名,包括文件的扩展名
● img是要保存的图像的名字
● params是保存的类型参数,可选

图像通道的基本操作

拆分图像的通道

b, g, r = cv2.split(img)
● b、g、r分别是B通道、G通道、R通道的图像信息
● img是要拆分的图像

获取图像属性

● shape:表示图像的大小。如果是彩色图像,则返回包含行数、列数和通道数的数组;如果是二值图像或灰度图像,则返回包含行数和列数的数组
● size:表示返回的图像的像素数目
● dtype:表示返回的图像的数据类型

Numpy.array 初识

Numpy是Python的一种开源的数值计算扩展,用来处理多维数组

图像运算

加法运算

在面向Python的OpenCV中有两种方法可以实现图像的加法运算。一种是通过运算符“+”对图像进行加法运算,另一种是通过cv2.add()函数来实现对图像的加法运算

运算符“+”

image-20240306140209276.png

a和b表示两幅图像的像素值,mod(a+b,256) 表示“a+b的和除以256取余

cv2.add()函数

result = cv2.add(a, b)
● result表示计算的结果
● a和b表示需要进行加法计算的两个像素值


image-20240306140507849.png

减法运算

一种是通过运算符“-”对图像进行加法运算,另一种是通过cv2.subtract()函数来实现对图像的减法运算

运算符“-”

image-20240306140729152.png

cv2.subtract()函数

result = cv2.subtract(a,b)
● result表示计算的结果
● a和b表示需要进行减法计算的两个像素值


image-20240306140920047.png

乘法运算

图像乘法运算有矩阵乘法和矩阵的点乘两种。面向Python的OpenCV提供了cv2. mutiply()函数进行矩阵的点乘运算,Python为矩阵的乘法运算提供了dot()函数

矩阵乘法

result = np.dot(a,b)
● result表示计算的结果
● a和b表示需要进行矩阵乘法计算的两个像素值矩阵

矩阵点乘运算

result = cv2.multiply(a,b)
● result表示计算的结果
● a和b表示需要进行矩阵点乘的两个像素值矩阵

除法运算

除法运算应用在图像中即为矩阵的点除运算,面向Python的OpenCV提供了cv2. divide()函数来进行像素矩阵的点除运算

result = cv2.divide(a, b)
● result表示计算的结果
● a和b表示需要进行矩阵点除的两个像素值矩阵

逻辑运算

按位与

dst = cv2.bitwise_and(src1, src2[, mask])
● dst表示与输入值具有相同大小的输出值
● src1表示第一个输入值
● src2表示第二个输入值
● mask表示可选操作掩码

按位或

dst = cv2.bitwise_or(src1, src2[, mask])
● dst表示与输入值具有相同大小的输出值
● src1表示第一个输入值
● src2表示第二个输入值
● mask表示可选操作掩码

按位非

dst = cv2.bitwise_not(src[, mask])
● dst表示与输入值具有相同大小的输出值
● src表示输入值
● mask表示可选操作掩码

按位异或

dst = cv2.bitwise_xor(src1, src2[, mask])
● dst表示与输入值具有相同大小的输出值
● src1表示第一个输入值
● src2表示第二个输入值

● mask表示可选操作掩码

图像的色彩空间转换

色彩空间类型转换函数

dst = cv2.cvtColor(src, code[, dstCn])
● dst表示与输入值具有相同类型和深度的输出图像
● src表示原始输入图像
● code是色彩空间转换码,常见的枚举值如表


image-20240306160732418.png

RGB色彩空间

RGB色彩空间使用三个数值向量表示色光三基色(Red、Green、Blue)的亮度。每个通道的数量值被量化为8~256个数,因此,RGB图像的红、绿、蓝三个通道的图像都是一幅8位图

GRAY色彩空间

GRAY色彩空间一般是指8位灰度图,像素值的范围是0~255,共256个灰度级。由RGB色彩空间转换为GRAY色彩空间的标准公式为
Gray=0.299 · R+0.587 ·G+0.114 · B

YCrCb色彩空间

在传统的RGB色彩空间中并没有亮度的信息,YCrCb色彩空间弥补了这个遗憾。在YCrCb色彩空间中,Y代表亮度,Cr和Cb保存色度信息,其中Cr表示红色分量信息,Cb表示蓝色分量信息
Y=0.299 ·R+0.587 ·G+0.114 ·B
Cr=(R-Y)· 0.713+delta
Cb=(B-Y)· 0.564+delta
R、G、B分别表示RGB色彩空间的三通道信息,delta的值为

image-20240306161302169.png

HSV色彩空间

HSV是从心理学角度提出的,它包括色调、饱和度和亮度三要素。其中,色调是指光的颜色,与混合光谱的主要光波长有关;饱和度是指颜色深浅程度或相对纯净度;亮度反映的是人眼感受到的光的明暗程度

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容