1-图像基础知识-0614

opencv
在这里插入图片描述

1. 数字图像处理

1.1 数字图像概念

1.1.1 数字图像:

• 数字图像,又称数码图像,一幅二
维图像可以由一个数组或矩阵表示。
• 数字图像可以理解为一个二维函数
f(x,y),其中 x 和 y 是空间(平面)坐
标,而在任意坐标处的值 f 称为图
像在该点处的强度或灰度。

1.1.2 图像处理目的:

• 改善图示的信息以便人们解释;
• 为存储、传输和表示而对图像进行
的处理
在这里插入图片描述

1.2 数字图像起源

1.2.1 最早应用的行业

• 媒体(报纸业)

1.2.2 最早应用的时间

• 20世纪20年代(1921年)

1.2.3 最早“数字图像处理”系统的用途

• 通过海底电缆,将图像从伦敦传输至纽约。客
观的讲,当时的应用并不涉及“数字图像处
理”,而是“数字图像传输”
在这里插入图片描述

1.3 常见成像方式

1.3.1 电磁波谱

• 光子即光量子(light quantum)
,电磁辐射的量子,E=hf,其中,
h为普朗克常量,f为光的频率。普
朗克常数的值约为:h=6.62×10^
(-34) J·s ,单位为焦(J)·秒 (s)。
• 光速波长与频率的关系:v=fλ
• 波长与能量的关系 E = hc/λ
• c = 光速
在这里插入图片描述

1.3.2 γ射线成像

• 是波长小于10^-10米的电磁波。
这种不可见的电磁波是从原子核
内发出来的,放射性物质或原子
核反应中常有这种辐射伴随着发
出。γ射线的穿透力很强,对生物
的破坏力很大。大脑生理信号EEG
中常用这个频段。
在这里插入图片描述

1.3.3 X射线成像

• 也叫,伦琴射线,这部分电磁波
波长从(10~0.01)×10^-9米。
CT就是用X射线照射物体,由于
生物组织或者工程组件的不同部
位对X射线的吸收率不一样,从而
得到不同的衰减以成像。
在这里插入图片描述

1.3.4 紫外线波段成像

• 波长比可见光短的称为紫外线,
它的波长从(380~10)×10^-9米,
它有显著的化学效应和荧光效应。
在生物医学领域应用最多。
在这里插入图片描述

1.3.5 可见光波段成像

• 这是人们所能感光的极狭窄的一
个波段,波长从(7.8~3.8) ×10^-7米,人类能 看见的所有物 体都是可见光波段成像,也就是光线照射在物体上,反射到人眼中从而成像的。
在这里插入图片描述

1.3.6 红外线波段成像

• 红外线波长为0.78—1000微米的电磁波,
其中波长为0.78—2.0微米的部分称为近
红外,波长为2.0—1000微米的部分称为
热红外线。自然界中,一切物体都可以辐
射红外线,因此利用探测仪测量目标本身
与背景间的红外线差可以得到不同的热红
外线形成的红外图像。

1.3.7 微波波段成像

• 波长从1米到0.1厘米,这些波多用在雷达
或其它通讯系统,微波影像是应用成像微
波辐射计(扫描型)接收地物发射波长为
1mm~30cm的微波辐射能形成的影像。
在这里插入图片描述### 1.3.8 射频波段成像
• 波长从3000米到10^-3米,一般的
电视和无线电广播、手机等的波段
就是用这种波.,但也能用于医学成
像,MRI是常见的影像诊疗手段。
在这里插入图片描述

1.4 数字图像的应用

⚫ 传统领域
• 医学、空间应用、生物学、军事
⚫ 最新领域
• 数码相机(DC)、数码摄像机(DV)
• 指纹识别、人脸识别,虹膜识别
• 互联网、视频、多媒体等
• 基于内容的图像检索、视频检索、多媒体检索
• 水印、游戏、电影特技、虚拟现实、电子商务
图像处理、机器视觉、人工智能关系
⚫ 图像处理主要研究二维图像,处理一个图像或 一组图像之间的相互转换的过程,包括图像滤波,图像识别,图像分割等问题
⚫ 计算机视觉主要研究映射到单幅或多幅图像上的 三维场景,从图像中提取抽象的语义信息,实现图像理解是计算机视觉的终极目标。
⚫ 人工智能在计算机视觉上的目标就是解决像素值 和语义之间关系,主要的问题有图片检测,图片识别,图片分割和图片检索。

1.5 Opencv介绍

• OpenCV于1999年由Intel建立;
• 开源发行的跨平台计算机视觉库;
• 操作系统:Linux、Windows、Android、Mac OS; • 构成:C 函数和少量 C++ 类;
• 接口:Python、Java、MATLAB等语言
• opencv是数字图像处理和计算机视觉领域最常见的工具包,是学习,科研,企业项目开发的好帮手。
⚫ python安装
• 推荐版本python3.6
⚫ Jupyter Notebook 安装
1. 打开命令行cmd
2. 更新pip:python -m pip install --upgrade pip
3. 安装Jupyter:pip install jupyter
⚫ 安装Opencv-python
1. 打开命令行cmd
2. pip install opencv-contrib-python
contrib 有一些收费的专利,或者现在还不太稳定的算法所推出的额版本,安装这个版本到后面的复杂的算法不会报错。

2.图像属性

2.1 图像格式

⚫ BMP格式
Windows系统下的标准位图格式,未经过压缩,一般图像文件会比较大。在很多软件中被广泛应用. ⚫ JPEG格式也是应用最广泛的图片格式之一,它采用一种特殊的有损压缩算法,达到较大的压缩比(可达到2:1甚40:1),互联网上最广泛使用的格式
⚫ GIF格式
不仅可以是一张静止的图片,也可以是动画,并且支持透明背景图像,适用于多种操作系统,“体型”很小,网 上很多小动画都是GIF格式。但是其色域不太广,只支持256种颜色.
⚫ PNG格式
与JPG格式类似,压缩比高于GIF,支持图像透明,支持Alpha通道调节图像的透明度,
⚫ TIFF格式
它的特点是图像格式复杂、存贮信息多,在Mac中广泛使用,非常有利于原稿的复制。很多地方将TIFF格式用于印刷.

2.2 图像尺寸

⚫ 图像尺寸
• 图像尺寸的长度与宽度是以像素为单位的。
⚫ 像素(pixel)
• 像素是数码影像最基本的单位,每个像素就是
一个小点,而不同颜色的点聚集起来就变成一
幅动人的照片。
• 灰度像素点数值范围在0到255之间,0表示黑、
255表示白,其它值表示处于黑白之间;
• 彩色图用红、绿、蓝三通道的二维矩阵来表示。
每个数值也是在0到255之间,0表示相应的基
色,而255则代表相应的基色在该像素中取得最
大值。

2.2.1 读入图像

函数:cv2.imread()
参数说明:
第一参数为待读路径;
第二个参数为读取方式,常见读取方式有三种:
在这里插入图片描述

#导入opencv的python版本依赖cv2
import cv2
#使用opencv中imread函数读取图片,0代表灰度图形式打开,1代表彩色形式打开
#'messi5.jpg'代表图像路径,0代表读取方式
img = cv2.imread('messi5.jpg',0)

2.2.2 显示图像

函数:cv2.imshow()
参数说明:
参数1:窗口的名字;
参数2:图像数据名。

#调用imshow()函数进行图像显示
#'image'代表窗口名字,img代表数组变量名
cv2.imshow('image',img)
#cv2.waitKey()是一个键盘绑定的函数,
#单位毫秒,0代表等待键盘输入。0为1000时为等待1s
cv2.waitKey(0)
#cv2.destroyALLWindows()删除窗口,
#默认值为所有窗口,参数一为删除窗口名。
cv2.destroyALLWindows()

2.2.3 保存图像

函数:cv2.imwrite()
参数说明:
参数1:图像名(包括格式),
参数2:待写入的图像数据变量名。

#'messigray.png'代表保存路径+名称  img代表变量名
cv2.imwrite('messigray.png',img)

2.3 图像分辨率和通道数

⚫ 分辨率:
单位长度中所表达或截取的像素数目。每英寸图像内
的像素点数,单位是像素每英寸(PPI)。图像分辨率越高,
像素的点密度越高,图像越清晰。
⚫ 通道数:
图像的位深度,是指描述图像中每个pixel数值所占
的二进制位数。位深度越大则图像能表示的颜色数就越多,
色彩越丰富逼真。
• 8位:单通道图像,也就是灰度图,灰度值范围2**8=256
• 24位:三通道3*8=24
• 32位:三通道加透明度Alpha通道
0表示全透明,255表示不透明,0-255之间表示半透明在这里插入图片描述

2.3.1 灰度转化

⚫ 目的
将三通道图像(彩色图)转化为单通道图像(灰度图)。
⚫ 公式
3–>1: GRAY = B * 0.114 + G * 0.587 + R * 0.299
1–>3: R = G = B = GRAY; A = 0
⚫ 函数:
cv2.cvtColor(img,flag)
⚫ 参数说明
参数1:待转化图像;
参数2:flag就是转换模式,cv2.COLOR_BGR2GRAY:彩
色转灰度
cv2.COLOR_GRAY2BGR:单通道转三通道

#导入opencv
import cv2 
#读入原始图像,使用cv2.IMREAD_UNCHANGED
img = cv2.imread("girl.jpg",cv2.IMREAD_UNCHANGED)
#查看打印图像的shape
shape = img.shape
print(shape)
#判断通道数是否为3通道或4通道
if shape[2] == 3 or shape[2] == 4 :
    #将彩色图转化为单通道图
    img_gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
    cv2.imshow("gray_image",img_gray)
cv2.imshow("image", img)
cv2.waitKey(0)
cv2.destroyAllWindows()

(500, 500, 3)
在这里插入图片描述

2.3.3 通道分离

⚫ 目的
将彩色图像,分成b、g、r 3个单通道图像。方便我们
对BGR 三个通道分别进行操作。
⚫ 函数:
cv2.split(img)
⚫ 参数说明
参数1:待分离通道的图像

#加载opencv
import cv2
src=cv2.imread('split.jpg')
cv2.imshow('before',src)
#调用通道分离
b,g,r=cv2.split(src)
#三通道分别显示
cv2.imshow('blue',b)
cv2.imshow('green',g)
cv2.imshow('red',r)
cv2.waitKey(0)
cv2.destroyAllWindows()

在这里插入图片描述
在这里插入图片描述

#导入opencv模块
import numpy as np
import cv2            
 
image=cv2.imread("split.jpg")#读取要处理的图片
cv2.imshow("src",image)
cv2.waitKey(0)
B,G,R = cv2.split(image)#分离出图片的B,R,G颜色通道

zeros = np.zeros(image.shape[:2],dtype="uint8")#创建与image相同大小的零矩阵
cv2.imshow("BLUE",cv2.merge([B,zeros,zeros]))#显示 (B,0,0)图像
cv2.imshow("GREEN",cv2.merge([zeros,G,zeros]))#显示(0,G,0)图像
cv2.imshow("RED",cv2.merge([zeros,zeros,R]))#显示(0,0,R)图像
cv2.waitKey(0)
cv2.destroyAllWindows()
print(image.shape[:2])

在这里插入图片描述
在这里插入图片描述
(459, 571)

2.3.4 通道合并

⚫ 目的
通道分离为B,G,R后,对单独通道进行修改,最后将修
改后的三通道合并为彩色图像。
⚫ 函数:cv2.merge(List)
⚫ 参数说明
参数1:待合并的通道数,以list的形式输入

#加载opencv
import cv2
src=cv2.imread('split.jpg')
cv2.imshow('before',src)
#调用通道分离
b,g,r=cv2.split(src)
#将Blue通道数值修改为0
g[:] = 0
#合并修改后的通道
img_merge=cv2.merge([b,g,r])
cv2.imshow('merge',img_merge)
cv2.waitKey(0)
cv2.destroyAllWindows()

在这里插入图片描述
代码5:通道分离与合并小结

import cv2 as cv
import numpy as np
src=cv.imread('split.jpg')
#cv.namedWindow('before',cv.WINDOW_NORMAL)
cv.imshow('before',src)
cv.waitKey(0)
#通道分离
b,g,r=cv.split(src)
cv.imshow('blue',b)
cv.imshow('green',g)
cv.imshow('red',r)
cv.waitKey(0)
#通道合并
src=cv.merge([b,g,r])
cv.imshow('merge',src)
cv.waitKey(0)
# 修改某个通道
src[:,:,2]=100
cv.imshow('single',src)
cv.waitKey(0)
cv.destroyAllWindows()

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.4 图像直方图

⚫ 图像直方图:
• 图像直方图(Image Histogram)是用以表示数字图
像中亮度分布的直方图,标绘了图像中每个亮度值的
像素数。这种直方图中,横坐标的左侧为纯黑、较暗
的区域,而右侧为较亮、纯白的区域。
⚫ 图像直方图的意义:
• 直方图是图像中像素强度分布的图形表达方式。
• 它统计了每一个强度值所具有的像素个数
• CV 领域常借助图像直方图来实现图像的二值化
在这里插入图片描述
在这里插入图片描述

2.4.1 直方图绘制

⚫ 目的
直方图是对图像像素的统计分布,它统计了每个像素
(0到255)的数量。
⚫ 函数:
cv2.calcHist(images, channels, mask, histSize,
ranges)
⚫ 参数说明
参数1:待统计图像,需用中括号括起来;
参数2:待计算的通道;
参数3:Mask,这里没有使用,所以用None。
参数4:histSize,表示直方图分成多少份;
参数5:是表示直方图中各个像素的值,[0.0, 256.0]表
示直方图能表示像素值从0.0到256的像素。直方图是
对图像像素的统计分布,它统计了每个像素(0到255)
的数量。

from matplotlib import pyplot as plt
import cv2
import numpy as np
img = cv2.imread('girl.jpg')
img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

plt.imshow(img_gray, cmap=plt.cm.gray)
hist = cv2.calcHist([img], [0], None, [256], [0, 256])

plt.figure()
plt.title("Grayscale Histogram")
plt.xlabel("Bins")
plt.ylabel("# of Pixels")
plt.plot(hist)
plt.xlim([0, 256])
plt.show()

在这里插入图片描述

2.4.2 三通道直方图绘制

from matplotlib import pyplot as plt
import cv2
girl = cv2.imread("girl.jpg")
cv2.imshow("girl", girl)
color = ("b", "g", "r")
#使用for循环遍历color列表,enumerate枚举返回索引和值
for i, color in enumerate(color):
    hist = cv2.calcHist([girl], [i], None, [256], [0, 256])
    plt.title("girl")
    plt.xlabel("Bins")
    plt.ylabel("num of perlex")
    plt.plot(hist, color = color)
    plt.xlim([0, 260])
plt.show()
cv2.waitKey(0)
cv2.destroyAllWindows()

在这里插入图片描述

2.5 颜色空间

2.5.1 概念:

• 颜色空间也称彩色模型(又称彩色空间或彩色系统)它的用途是在某些标准下用通常可
接受的方式对彩色加以说明。

2.5.2 常见的颜色空间:

• RGB、HSV、HSI、CMYK

2.5.2.1 RGB颜色空间概念

• 主要用于计算机图形学中,依据人眼识别的颜色创建,图
像中每一个像素都具有R,G,B三个颜色分量组成,这三个
分量大小均为[0,255]。通常表示某个颜色的时候,写成一
个3维向量的形式(110,150,130)。

2.5.2.2 颜色模型

• 原点对应的颜色为黑色,它的三个分量值都为0; • 距离原点最远的顶点对应的颜色为白色,三个分量值都为
1; • 从黑色到白色的灰度值分布在这两个点的连线上,该虚线
称为灰度线;
• 立方体的其余各点对应不同的颜色,即三原色红、绿、蓝
及其混合色黄、品红、青色;
在这里插入图片描述

2.5.2.3 HSV颜色空间概念

• HSV(Hue, Saturation, Value)是根据颜色
的直观特性由A. R. Smith在1978年创建
的一种颜色空间,这个模型中颜色的参数
分别是:色调(H),饱和度(S),明
度(V)。

2.5.2.4 颜色模型

• H通道:Hue,色调/色彩,这个通道代
表颜色。
• S通道:Saturation,饱和度,取值范围
0%~100%,值越大,颜色越饱和。
• V通道:Value,明暗,数值越高,越明
亮,0%(黑)到100%(白)。
在这里插入图片描述

2.5.2.5 HSI颜色空间概念

• HSI模型是美国色彩学家孟塞尔(H.A.Munseu)于1915年提
出的,它反映了人的视觉系统感知彩色的方式,以色调、
饱和度和强度三种基本特征量来感知颜色。

2.5.2.6 模型优点

• 在处理彩色图像时,可仅对I分量进行处理,结果不改变
原图像中的彩色种类;
• HSI模型完全反映了人感知颜色的基本属性,与人感知颜
色的结果一一对应。
在这里插入图片描述

2.5.2.7 CMYK颜色空间概念

• CMYK(Cyan, Magenta,Yellow, blacK)颜色空间应用于印刷
工业,印刷业通过青©、品(M)、黄(Y)三原色油墨的不同
网点面积率的叠印来表现丰富多彩的颜色和阶调,这便是
三原色的CMY颜色空间。
在这里插入图片描述

3. 总结

3.1 核心知识

⚫ 数字图像基本概念
⚫ 图像的读取和显示
⚫ 图像直方图的绘制
⚫ 图像通道及通道的分离与合并
⚫ 颜色空间转化

4. 本节作业

01 本节代码复现和理解
回顾本节知识点,将本节列举的例子进行代码复现,关键代码手动
输入,加深印象
02 动手试一试:图片格式修改
选择电脑中一张图片,将其格式修改为jpg、bmp、png、tif等格式。
03 动手试一试:绘制图像直方图
拍摄几张不同亮度下的照片,并分别绘制他们的直方图,观察直方
图的变化规律

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值