图像转灰度值计算公式原理_图像处理--传统算法
图像处理中平滑和锐化操作是什么?
平滑处理(smoothing)也称模糊处理(bluring),主要用于消除图像中的噪声部分,平滑处理常用的用途是用来减少图像上的噪点或失真,平滑主要使用图像滤波。在这里,我个人认为可以把图像平滑和图像滤波联系起来,因为图像平滑常用的方法就是图像滤波器。 在OpenCV3中常用的图像滤波器有以下几种:
1.方框滤波——BoxBlur函数
2.均值滤波(邻域平均滤波)——Blur函数
3.高斯滤波——GaussianBlur函数
4.中值滤波——medianBlur函数
5.双边滤波——bilateralFilter函数
图像锐化操作是为了突出显示图像的边界和其他细节图像锐化实现的方法是通过各种算子和滤波器实现的——Canny算子、Sobel算子、Laplacian算子以及Scharr滤波器。
HOG算法原理描述
方向梯度直方图(Histogram of Oriented Gradient, HOG)特征是一种在计算机视觉和图像处理中用来进行物体检测的特征描述子。它通过计算和统计图像局部区域的梯度方向直方图来构成特征。在深度学习取得成功之前,Hog特征结合SVM分类器被广泛应用于图像识别中,在行人检测中获得了较大的成功。
HOG特征原理:
HOG的核心思想是所检测的局部物体外形能够被光强梯度或边缘方向的分布所描述。通过将整幅图像分割成小的连接区域(称为cells),每个cell生成一个方向梯度直方图或者cell中pixel的边缘方向,这些直方图的组合可表示出(所检测目标的目标)描述子。为改善准确率,局部直方图可以通过计算图像中一个较大区域(称为block)的光强作为measure被对比标准化,然后用这个值(measure)归一化这个block中的所有cells。这个归一化过程完成了更好的照射/阴影不变性。 与其他描述子相比,HOG得到的描述子保持了几何和光学转化不变性(除非物体方向改变)。因此HOG描述子尤其适合人的检测。
HOG特征提取方法就是将一个image:
1.灰度化(将图像看做一个x,y,z(灰度)的三维图像)
2.划分成小cells(2*2)
3.计算每个cell中每个pixel的gradient(即orientation)
4.统计每个cell的梯度直方图(不同梯度的个数),即可形成每个cell的descriptor。
HOG特征检测步骤
HOG特征检测步骤
颜色空间归一化——–>梯度计算————->梯度方向直方图———->重叠块直方图归一化———–>HOG特征。
图像哈希算法
1.均值哈希算法:
第一步,缩小尺寸。最快速的去除高频和细节,将图片缩小到8x8的尺寸,总共64个像素。摒弃不同尺寸、比例带来的图片差异。
第二步,简化色彩。将缩小后的图片,转为64级灰度。也就是说,所有像素点总共只有64种颜色。
第三步,计算平均值。计算所有64个像素的灰度平均值。
第四步,比较像素的灰度。将每个像素的灰度,与平均值进行比较。大于或等于平均值,记为1;小于平均值,记为0。
第五步,计算哈希值。将上一步的比较结果,组合在一起,就构成了一个64位的整数,这就是这张图片的指纹。组合的次序并不重要,只要保证所有图片都采用同样次序就行了。
如果图片放大或缩小,或改变纵横比,结果值也不会改变。增加或减少亮度或对比度,或改变颜色,对hash值都不会太大的影响。最大的优点:计算速度快!
如果想比较两张图片,为每张图片构造hash值并且计算不同位的个数。如果不相同的数据位不超过5,就说明两张图片很相似;如果大于10,就说明这是两张不同的图片。
2.感知哈希算法:
第一步,缩小尺寸。最快速的去除高频和细节,将图片缩小到8x8的尺寸,总共64个像素。摒弃不同尺寸、比例带来的图片差异。
第二步,简化色彩。将缩小后的图片,转为64级灰度。也就是说,所有像素点总共只有64种颜色。
第三步,计算DCT(离散余弦变换)。DCT是把图片分解频率聚集和梯状形,虽然JPEG使用8 * 8的DCT变换,在这里使用32 * 32的DCT变换。
第四步,缩小DCT。虽然DCT的结果是32 * 32大小的矩阵,但我们只要保留左上角的8*8的矩阵,这部分呈现了图片中的最低频率。
第五步,计算平均值。计算所有64个值的平均值。
第六步,进一步减小DCT。这是最主要的一步,根据8 * 8的DCT矩阵,设置0或1的64位的hash值,大于等于DCT均值的设为”1”,小于DCT均值的设为“0”。结果并不能告诉我们真实性的低频率,只能粗略地告诉我们相对于平均值频率的相对比例。只要图片的整体结构保持不变,hash结果值就不变。能够避免伽马校正或颜色直方图被调整带来的影响。
第七步,计算哈希值。将64bit设置成64位的长整型,组合的次序并不重要,只要保证所有图片都采用同样次序就行了。将32 * 32的DCT转换成32 * 32的图像。
将上一步的比较结果,组合在一起,就构成了一个64位的整数,这就是这张图片的指纹。组合的次序并不重要,只要保证所有图片都采用同样次序就行了(例如,自左到右、自顶向下、big-endian)。
得到指纹以后,就可以对比不同的图片,看看64位中有多少位是不一样的。在理论上,这等同于计算汉明距离。如果不相同的数据位不超过5,就说明两张图片很相似;如果大于10,就说明这是两张不同的图片。
3.差异哈希算法
第一步,缩小尺寸,缩放到9 * 8尺寸。
第二步,转换灰度值,转换到0-255之间。
第三步,差异值计算,差异值是通过计算每行相邻像素的强度对比得出的。我们的图片为9 * 8的分辨率,那么就有8行,每行9个像素。差异值是每行分别计算的,也就是第二行的第一个像素不会与第一行的任何像素比较。每一行有9个像素,那么就会产生8个差异值,这也是为何我们选择9作为宽度,因为8bit刚好可以组成一个byte,方便转换为16进制值。
如果前一个像素的颜色强度大于第二个像素,那么差异值就设置为True(也就是1),如果不大于第二个像素,就设置为False(也就是0)。
第四步,转化为hash值,将差异值数组中每一个值看做一个bit,每8个bit组成为一个16进制值,将16进制值连接起来转换为字符串,就得出了最后的dHash值。
第五步,计算汉明距离,如果不相同的数据位不超过5,就说明两张图片很相似;如果大于10,就说明这是两张不同的图片。
介绍一下图像的高频、低频部分
图像的频率:灰度值变化剧烈程度的指标,是灰度在平面空间上的梯度。
(1)什么是低频?
低频就是颜色缓慢地变化,也就是灰度缓慢地变化,就代表着那是连续渐变的一块区域,这部分就是低频. 对于一幅图像来说,除去高频的就是低频了,也就是边缘以内的内容为低频,而边缘内的内容就是图像的大部分信息,即图像的大致概貌和轮廓,是图像的近似信息。
(2)什么是高频?
反过来, 高频就是频率变化快.图像中什么时候灰度变化快?就是相邻区域之间灰度相差很大,这就是变化得快.图像中,一个影像与背景的边缘部位,通常会有明显的差别,也就是说变化那条边线那里,灰度变化很快,也即是变化频率高的部位.因此,图像边缘的灰度值变化快,就对应着频率高,即高频显示图像边缘。图像的细节处也是属于灰度值急剧变化的区域,正是因为灰度值的急剧变化,才会出现细节。
另外噪声(即噪点)也是这样,在一个像素所在的位置,之所以是噪点,就是因为它与正常的点颜色不一样了,也就是说该像素点灰度值明显不一样了,,也就是灰度有快速地变化了,所以是高频部分,因此有噪声在高频这么一说。
图像补全的方法
Region Filling and Object Removal by Exemplar-Based Image Inpainting
算法的流程大致如下:
1)对待补全区域边界的像素依次计算补全的优先度(priority),这个优先度主要考虑2个因素。一个是周围像素可信度高的位置要优先补,另一个是位于图像梯度变化剧烈的位置要优先补。综合二者得到所有优先度之后,挑选优先度最高的像素来补
2)对于上一步找到的待补全像素,考虑它周围的一个小patch(比如3*3)。在图像已知部分搜索所有的patch,找到最相似的patch
3)用找到的best match来补全未知部分,并更新相关数值
但是我们也不难发现这个方法存在的问题:如果图像已知部分找不到相似的patch,那算法将无法进行;这个方法只适用于补全背景以低频信息和重复性纹理为主的图像;搜索相似的patch计算复杂度非常高,算法运行效率低。
Scene Completion Using Millions of Photographs
算法的大致流程如下:
1)从Flickr上下载两百万图片构建数据库,以”landscape””city””park”等关键词搜索户外场景的图片。
2)对于一张待补全图像,从数据库中挑选200个场景最相似的图片,这里使用gist scene descriptor和图像下采样到4*4作为匹配的特征向量。
3)将补全区域边界外80个pixel的区域作为context。对于每一张匹配的图像,搜索所有的平移空间和3个尺度的scale空间,根据context部分的匹配误差,选择最佳的补全位置;之后利用graph-cut算法求解最佳的融合边界。
4)利用标准的泊松融合处理融合边界。
5)将前几步的匹配cost和graph-cut的cost加起来,返回cost最小的20的结果供用户挑选。
Context Encoders: Feature Learning by Inpainting
文章提出的网络结构如下,包括3个部分:Encoder, Channel-wise fully-connected layer, Decoder。Encoder的结构直接借鉴了AlexNet前5层的卷积层结构,具体结构如下。输入的crop尺寸是227Í227,卷积之后得到的feature map结构是256层6 Í 6。所有的weight都随机初始化。
Channel-wise fully-connected layer是对普通fc层的一种改进。之所以加入fc层是为了使feature map每一层的信息可以在内部交流。但传统的fc层参数太多,因此作者提出可以在fc中去掉feature map层间的信息交流,从而减少参数规模。在fc之后会接一个stride为1的卷积层,来实现层间的信息交流。
Decoder的目的是将压缩的feature map一步步放大,恢复到原始图片的尺寸。文章提出采用5个up-convolutional层,每层后接一个RELU。上采样的结构如下。
图像转灰度值计算公式原理_图像处理--传统算法相关推荐
- 图像转灰度值计算公式原理_灰度图像转化成反射率亮温图像
灰度图像转化成反射率亮温图像_银川平原不同类型湿地碳汇评估研究 1.3.3.1 灰度图转反射率/亮温方法 参考古丽给娜·塔依尔江等[119]研究,Landsat5的辐射亮温L的计算公式为: Lands ...
- 8bit黑白图像的灰度值范围是_浅谈工业CT图像灰度值
工业CT使用的X射线检测作为无损检测的主要方法之一,与其他方法相比具有直观.准确等优点.射线检测中垂直于射线透照方向的缺陷尺寸可精确测量,但平行于射线透照方向的缺陷尺寸无法直接测量得到,而未焊透.根部 ...
- 8bit黑白图像的灰度值范围是_数字图像处理基本知识
1.数字图像: 数字图像,又称为数码图像或数位图像,是二维图像用有限数字数值像素的表示.数字图像是由模拟图像数字化得到的.以像素为基本元素的.可以用数字计算机或数字电路存储和处理的图像. 2.数字图像 ...
- 8bit黑白图像的灰度值范围是_窗宽窗位对基于互信息的医学图像
窗宽窗位对基于互信息的医学图像 摘 要:基于互信息的配准方法具有自动化程度高.配准精度高等优点,近来已成为医学图像处理领域的热点.基于互信息的配准方法实质上是一种对灰度进行统计和计算的方法,因此同一图 ...
- 什么叫做形态学图像处理_图像处理基本算法-形态学
形态学一般是使用二值图像,进行边界提取,骨架提取,孔洞填充,角点提取,图像重建. 基本的算法:膨胀腐蚀,开操作,闭操作,击中击不中变换 几种算法进行组合,就可以实现一些非常复杂的功能,而且逻辑严密. ...
- python图像分割动态域值_图像处理基本算法 动态阈值分割
在图像处理时,受外界光线的干扰一般比较大,假如在阈值分割时采用固 定阈值,那么在环境改变时分割效果受影响极大,那么为了避免此影响就 必须采用动态阈值,自动求出合适的阈值进行分割. 本文的介绍几种主要的 ...
- 二值图填充原理 matlab,图像Ostu二值化原理及matlab实现代码
Ostu假设图像是由前景区域和背景区域两部分组成的,通过遍历计算不同阈值(通常为[0 255]区间范围内)下分割结果中前景区域和背景区域的灰度直方图,然后比较两者之间的方差,使得方差最大化的那个灰度阈 ...
- 图像的二值化原理和实现
1. 图像的二值化的基本原理 图像的二值化处理就是讲图像上的点的灰度置为0或255,也就是讲整个图像呈现出明显的黑白效果.即将256个亮度等级的灰度图像通过适当的阀值选取而获得仍然可以反映图像整体和 ...
- opencv读取图像的灰度值并显示出来
通过双层循环,遍历所有的像素值,再输出灰度值即可.图片太大,所有只选择20行和20列进行输出. 昨天要用到图片的灰度值,脑子突然短路了,忘了存储灰度图的数组,存放的就是图片的灰度值,还以为要用什么函数 ...
最新文章
- 2021全国高校计算机能力挑战赛(初赛)C语言
- Device Tree(三):代码分析
- Metadata Lock原理2
- python代码案例详解-Python运算符重载详解及实例代码
- 解决删除从表,主表存在外键的问题
- 使用 yield 减少内存消耗
- Java 8仍然需要LINQ吗? 还是比LINQ更好?
- JS数据结构与算法——插入排序
- CCF201612-2 工资计算
- CCF201503-3 节日(100分)
- 登录窗体与主窗体的关闭
- Java编程的逻辑 (70) - 原子变量和CAS
- C++中各种文件后缀名的区别
- [k8s]如何处理dockerfile无expose情况下在k8s里暴漏访问
- SAP 固定资产增值和减值
- serverlet 区别_jsp serverlet 区别
- 深入理解Netty编解码、粘包拆包、心跳机制
- 个人信息怎么被贱卖:运营商内鬼不可或缺
- yun2win发布即时通讯云IM,做最安全的即时通讯云!
- 逻辑回归预测瘀血阻络证||LogRegression 二分类 python3|五折交叉验证
热门文章
- 计算机组成原理x移,计算机组成原理移位运算
- 试水电子处方的背后:移动医疗利好时机到来?
- adreno630gpu参数_苹果自研GPU为何不如高通Adreno 630优秀
- id3算法c语言实现,从ID3到C5.0的故事:算法详解及实践应用
- python flask智能租房项目——用户中心
- hbase导入csv文件_CDH5.4.5运行Phoenix导入CSV文件
- 一文详解自动驾驶的运行设计域(ODD)| 自动驾驶系列
- 战地三服务器找不到了,战地3进不了游戏怎么办_战地3处理PunkBuster(PB)不能进游戏问题_快吧单机游戏...
- wordpress主题中文- wordpress中文主题插件如何安装
- yarn : 无法加载文件 C:\Users\panji\AppData\Roaming\npm\yarn.ps1,因为在此系统上禁止运行脚本。有关详细信息