图像基础
- 图像二值化:是指将图像中的每个像素点的灰度值转换为两个可能的值之一,通常为0(黑色)或255(白色)
- 图像归一化:是为了调整图像的亮度和对比度,使得图像的数据分布符合特定的要求,例如将像素值缩放到 [0, 1] 或者 [-1, 1] 的范围(比如除255,变成小数 0.2333)。这有助于减少光照条件的影响,提高不同图像之间的可比性,并且可以使某些算法的表现更加稳定,
- 像素宽度:指的是图像实际的宽度,以像素为单位。例如,一个720x720的图像,其像素宽度是720
- 行宽度(stride):指的是每行图像数据在内存中占用的字节数。它可能大于或等于像素宽度乘以每个像素的字节数,具体取决于图像格式和对齐要求
- 对于单通道图像(如灰度图),stride通常是图像宽度乘以每个像素的字节数。例如,对于一个720x720的灰度图,每个像素占1个字节,那么stride就是720字节
- 假设你有一个720x720的YUV420P图像,每个像素平均占1.5个字节。Y平面的stride是720字节(因为每个Y像素占1个字节),而U和V平面的stride是720 / 2 = 360字节(因为U和V每个分量共享4个像素)// 注意每个平面不一样
- 如果你有一个720x720的RGB图像,每个像素占3个字节,且要求4字节对齐,那么stride将是720 * 3 = 2160字节,因为它已经是4的倍数,不需要额外填充
算子:
OpenAI算子是OpenAI API中提供的一种函数,它用于对文本或图像进行操作,如文本生成、文本分类、图像生成等。这些算子可以基于预训练的模型,通过调用API接口来执行特定的任务。
OpenCV算子是指OpenCV库中提供的一系列用于图像处理的函数和算法。这些算子可以对图像进行各种操作,如滤波、边缘检测、特征提取等。
例如,Sobel算子是一种用于边缘检测的算子,它可以提取图像的一阶梯度信息,用于识别图像中的边缘。其他的算子如Laplacian、Canny等也有各自的特点和应用场景。
在使用OpenCV算子时,通常需要指定相应的参数,以控制算子的行为。不同的算子可能需要不同的参数,因此在使用时需要根据具体情况进行设置。
1. 向量: 有大小有方向(比如带箭头的线段, 箭头所指代表方向,线段长度代表大小)
图片数据通常以向量的形式保存并进行处理。向量将图片分解成一个个像素,向量元素记录着各个像素点的颜色信息,所以这个向量表达的是图片色彩的分布,反过来根据向量包含的信息也能渲染出对应的图片
黑白图片(灰度图)通过2维向量(矩阵)来表达。2个维度的长度分别代表了图片的高度和宽度(以像素为单位),向量元素记录着每一个像素的灰度(数值越大,颜色越浅)
彩色图片通过3维向量来表达。3个维度的长度分别代表了图片的高度、高度(以像素为单位)和通道数。在RGB模式下,彩色图片有3个通道,保存着图片各个像素红色(Red)、绿色(Green)和蓝色(Blue)的量化数值
2.数量(标量) :只有大小,没有方向
======================================================== 1
1和2用到卷积核的地方,最好都声明卷积核的width和height都为正奇数,否则卷积核中心与原图像中心点难以对齐,造成不对称。
1.图像形态学操作
a.膨胀:在规定的卷积核中取最大值代替原图像的中心点,目的是扩大较明亮物体的边界。(卷积核取最大值)
b.腐蚀:在规定的卷积核中取最小值代替原图像的中心点,目的是缩小较明亮物体的边界。(卷积核取最小值)
c.开运算: 先腐蚀,再膨胀。腐蚀操作去除物体边界的毛刺,膨胀操作恢复已经被腐蚀操作缩小过的物体边界。(因为腐蚀的话是把图像的所有部分都腐蚀了(取最小值变暗),所以完了我们要把主体部分膨胀还原)
应用: 去除物体边界的毛刺
d. 闭运算: 先膨胀,再腐蚀。膨胀操作去除物体内部的黑点(洞),腐蚀操作缩小已经被膨胀操作扩大的物体边界。(因为膨胀的话是把图像的所有部分都膨胀了(取最大值变亮),所以完了我们要把主体部分腐蚀还原)
e.基本梯度:经过膨胀后的图像减去经过腐蚀后的图像
应用: 提取物体的边界
2.图像模糊处理(blur,滤波)
a.均值滤波:取原图像中心点的值为卷积核范围内的均值。或者用卷积的语言说:原图像中心点的值变为原图像与矩阵中每个元素都是 1/(width*height)的卷积核的卷积。(卷积核取均值)
b.中值滤波:取原图像中心点的值为卷积核范围内的像素值的中位数。(卷积核取中值)
应用: 去除椒盐噪声。在图像的某些像素点采样时,可能由于外界噪声导致某些像素点过敏或过暗,就像盐粒或胡椒粉一样的颜色,称为椒盐噪声。(但要求卷积核的尺寸大于椒盐粒的尺寸)
c.高斯滤波:卷积核其实就是一种权重,而在均值滤波中,卷积核内的像素点的权重都相同**。而高斯滤波考虑了空间因素,以像素点中心为二维高斯分布的中心,卷积核内的取值按高斯分布减小。**高斯分布考虑了空间信息,因此对部分解决了均值滤波损失了物体边界信息的缺陷。(卷积核根据权重相乘取值(权重相加为1 所以超不出255))
d.双边滤波:同时考虑空间因素和像素因素。有空域核,值域核两个卷积核。(卷积核根据权重相乘取值(权重相加为1 所以超不出255),同时考虑差值(也就是边缘),如果超过多少那这部分就保留)
空域核:元素取值是空间位置的高斯函数。
值域核:当周围像素与中心像素的像素值差距过大时,就不把此像素计算在内。
======================================================== 2
设A是线性空间 V 的一个线性变换,A的全体像组成的集合称为 A 的值域,用 AV 表示. 所有被A变成零向量的向量组成的集合称为 A 的核,用A−1(0) 表示.
1.值域:某个空间中所有向量经过变换矩阵后形成的向量的集合,通常用R(A)来表示
2.核:所有经过变换矩阵后变成了零向量的向量组成的集合,通常用Ker(A)来表示。
======================================================== 3
傅立叶变换是实现从空域或时域到频域的转换工具
1. 空间域(spatial domain): 也叫空域,即所说的像素域,在空域的处理就是在像素级的处理,如在像素级的图像叠加。或者说就是描述像素空间分布的信息,经过傅立叶变换可以得到频率域
2.频率域(frequency domain): 任何一个波形都可以分解成多个正弦波之和。每个正弦波都有自己的频率和振幅。所以任意一个波形信号有自己的频率和振幅的集合。频率域就是空间域经过傅立叶变换的信号
3.时域(时间域):自变量是时间,即横轴是时间,纵轴是信号的变化。其动态信号x(t)是描述信号在不同时刻取值的函数。
__EOF__

本文链接:https://www.cnblogs.com/fxw1/p/16883408.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
本文来自博客园,作者:封兴旺,转载请注明原文链接:https://www.cnblogs.com/fxw1/p/16883408.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
2021-11-12 C中调用C++