c++
zhangshen12356
这个作者很懒,什么都没留下…
展开
-
图片相似度计算 3---(dhash--c++实现)
前面两篇博客介绍了均值哈希算法(ahash)、感知哈希算法(phash)。由前面的介绍可知,ahash算法是基于比较灰度图每个像素与所有像素点的平均值来实现的,最适合用于缩略图,放大搜索在本质上是对颜色作比较。phash由于做了DCT操作,本质上是对频率的比较。下面要介绍的图像差异哈希算法(dhash)是通过对比相邻像素像素值的差异,即逐像素得到当前像素与右邻像素的差值,得到一个图像差异矩阵,通过该矩阵生成哈希值。这个逐像素得到的图像差异矩阵的比原像素矩阵少了一列,即宽度比原像素矩阵少了1,高度不变。下原创 2020-06-08 17:06:33 · 1743 阅读 · 3 评论 -
图片相似度计算 2---(phash--c++实现)
在上一篇博客里介绍了图片相似计算中的最简单的一个ahash, 其是基于内容检索最简单的一种,这篇介绍它的增强版感知哈希算法(phash—perceptual hash)。主要也是用缩略图搜索原图并能达到较好点的效果。其实现一共包含以下几个步骤:图像缩放–将图像缩放到32*32大小,这一步的作用是取出各种图片尺寸和图片比例的差异,只保留结构、明暗等信息。灰度化–将32*32大小的图像进行灰度化离散余弦变换(DCT)–对32*32大小图像进行DCT计算均值–用3232大小图片前面88的像素值中大于均原创 2020-06-08 15:30:34 · 1470 阅读 · 0 评论 -
图片相似度计算 1----(ahash--c++实现)
最近接触到图像去重算法,有phash、dhash和ahash等基于哈希方法的去重算法。phash全称是感知哈希算法(Perceptual hash algorithm),使用这玩意儿可以对每个图片生成一个值,然后计算他们的hamming distance,简单的说就是数一数二进制之后有几位不同。整个处理流程有点像对文章去重时先算simhash再算hamming distance,很多东西都可以直接套用过来。首先介绍ahash算法(全称average hash)是phash算法的一种,是基于图像内容搜.原创 2020-06-07 17:06:37 · 1642 阅读 · 0 评论 -
二叉堆(c++实现)
二叉堆的介绍二叉堆是完全二元树或者是近似完全二元树,按照数据的排列方式可以分为两种:最大堆和最小堆。最大堆:父结点的键值总是大于或等于任何一个子节点的键值;最小堆:父结点的键值总是小于或等于任何一个子节点的键值。示意图如下:二叉堆一般都通过"数组"来实现。数组实现的二叉堆,父节点和子节点的位置存在一定的关系。有时候,我们将"二叉堆的第一个元素"放在数组索引0的位置,有时候放在1的位置。当然,它们的本质一样(都是二叉堆),只是实现上稍微有一点点的区别。假设"第一个元素"在数组中的索引为 0 的话,则原创 2020-05-17 14:20:50 · 907 阅读 · 0 评论 -
c++中cin.clear()、cin.sync()的用法
最近在看一段程序的时候看见用完cin之后有的时候需要用到cin.clear(); cin.sync();首先需要加#include,然后在学习这个用法时,让我对cin有了新的认识,例如我们读取一系列整型数据,将其存入vector对象中,然后使用count()统计某个指定值出现的次数,下面是我开始的程序:#include<iostream>#include"algorithm"#include<vector>using namespace std;int main()原创 2020-05-11 13:03:42 · 1352 阅读 · 1 评论