标签: cbir

近似重复图像检测

通过它们彼此的相似性来对一组给定图像进行排序的快速方法是什么.

目前我有一个系统在两个图像之间进行直方图分析,但这是一个非常昂贵的操作,似乎太过分了.

最理想的是,我正在寻找一种能够为每个图像提供分数的算法(例如整数分数,例如RGB平均值),我可以按该分数进行排序.相同的分数或分数彼此相邻可能是重复的.

0299393
0599483
0499994 <- possible dupe
0499999 <- possible dupe
1002039
4995994
6004994 
Run Code Online (Sandbox Code Playgroud)

每张图像的RGB平均值很糟糕,有类似的东西吗?

sorting image image-processing cbir

92
推荐指数
7
解决办法
5万
查看次数

如何使用OpenCV减少图像中的颜色数量?

我有一组图像文件,我想将它们的颜色数减少到64.我怎么能用OpenCV做到这一点?

我需要这个,所以我可以使用64大小的图像直方图.我正在实施CBIR技术

我想要的是4位调色板的颜色量化.

opencv colors image-processing cbir

21
推荐指数
5
解决办法
3万
查看次数

获得最常见的图像颜色

我想从图像中获得最常见的颜色.我使用Java,我希望拥有最主要的颜色.有没有任何cbir java库来做这个?

谢谢

java colors cbir

9
推荐指数
2
解决办法
1万
查看次数

用于在数据库中查找类似图像的度量标准

计算两个图像之间的相似性有很多不同的算法,但是我找不到关于如何将这些信息存储在数据库中的任何信息,以便您可以快速找到类似的图像.

"类似"是指已经旋转(90度增量),颜色调整和/或重新保存(有损jpeg压缩)的精确重复.

我试图想出一个图像的" 指纹 ",以便我可以快速查找它们.

到目前为止,我提出的最好的方法是生成灰度直方图.使用16个箱和256个灰色阴影,我可以轻松创建一个16字节的指纹.这种方法运行得相当不错,但它并不像我想的那么强大.

我尝试的另一个解决方案是调整图像大小,旋转它们以使它们都以相同的方式定向,对它们进行灰度化,对直方图进行标准化,然后将它们缩小到大约8x8,并将颜色减少到16种灰度.尽管微缩图像非常相似,但它们通常偏离一两个像素,这意味着精确匹配不起作用.

如果没有精确匹配,我不相信有任何有效的方法来分组相似的照片(不将每张照片与其他每张照片进行比较,即O(n ^ 2)).

那么,(1)我如何创建我创建一个与上述要求不变的指纹/签名?或者,(2),如果这是不可能的,有什么其他的指标可以我用这样给定一个单一的形象,我可以找到它的最佳匹配数千数据库?

database image computer-vision cbir

7
推荐指数
1
解决办法
2076
查看次数

在本地计算机上反向图像搜索(用于图像重复)

我有一堆从 pdf 中提取的质量较差的照片。我认识的某个人在她的电脑 (Mac) 上某处有高质量的照片,但我的理解是很难找到它们。

我想要

  • 循环浏览每张质量较差的照片
  • 使用每张质量较差的照片作为查询图像并使用此人的计算机作为数据库执行反向图像搜索以搜索更高质量的图像
  • 并在一个目标文件夹中创建每个高质量图像的副本。

示例伪代码

for each image in poorQualityImages:
    search ./macComputer for a higherQualityImage of image
    copy higherQualityImage to ./higherQualityImages
Run Code Online (Sandbox Code Playgroud)

我需要执行一次此操作。我正在寻找一种工具、github 存储库或库,它可以执行此功能,而不是对基于内容的图像检索的深入理解。


reddit上有一个帖子,有人试图做类似的事情

imgdupes是一个程序,它似乎几乎实现了这一点,但我不想删除重复项,我想将最高质量的副本复制到目标文件夹


更新

给我以前的图像处理教授发了电子邮件,他给我发了这个

在我的头顶上,没有什么开箱即用的。

这里没有保证的解决方案,但您可以缩小搜索空间。您需要一个小程序来输出两个图像之间的 MSE 或 SSIM 相似度索引,然后编写另一个程序或 shell 脚本来扫描硬盘驱动器并计算硬盘驱动器上的每个图像与每个查询图像之间的 MSE,然后检查具有最高 X 百分比相似度得分的图像。

类似的东西。仍然不能保证找到你想要的一切。如果低质量图像与高质量图像的像素尺寸不同,则必须进行一些图像缩放才能获得相似度指数。如果质量差的图像具有不同的纵横比,那就更糟了。

所以我认为这并不难,但也不是微不足道的。难度部分取决于低质量图像中损坏的性质。


更新

我写的 Github 项目实现了我想要的

image-processing cbir keras tensorflow pytorch

7
推荐指数
1
解决办法
985
查看次数

如何在MATLAB中绘制基于内容的图像检索的Precision-Recall图?

我正在从文件夹"c1"访问10个图像,我有查询图像.我已经实现了在单元格数组中加载图像的代码,然后我将逐个计算查询图像与文件夹"c1"中每个图像之间的直方图交集.现在我想绘制精确回忆曲线,但我不知道如何编写代码以使用从直方图交叉点获得的数据获得"精确回忆曲线".我的代码:

Inp1=rgb2gray(imread('D:\visionImages\c1\1.ppm'));
figure, imshow(Inp1), title('Input image 1');

srcFiles = dir('D:\visionImages\c1\*.ppm');  % the folder in which images exists
for i = 1 : length(srcFiles)
    filename = strcat('D:\visionImages\c1\',srcFiles(i).name);
    I = imread(filename);
    I=rgb2gray(I);
    Seq{i}=I;


end
for i = 1 : length(srcFiles)  % loop for calculating histogram intersections
    A=Seq{i};
    B=Inp1;
    a = size(A,2); b = size(B,2); 
    K = zeros(a, b);
    for j = 1:a
    Va = repmat(A(:,j),1,b);
    K(j,:) = 0.5*sum(Va + B - abs(Va - B));
    end  
end
Run Code Online (Sandbox Code Playgroud)

matlab image-processing cbir

6
推荐指数
1
解决办法
9145
查看次数

CBIR索引策略

我正在开发一种集成在车牌识别应用程序中的CBIR解决方案.图像匹配算法非常强大,但是您可以想象数据库非常庞大,从数据库中提取图像以进行匹配的速度非常慢.我试图用像小的局部特征向量或甚至单个数值来量化图像,但没有成功.这个想法是索引一些这样的值,以允许真正快速的提取,同时大大减少匹配候选的数量.我已经阅读了很多关于这个主题的论文,但是大多数论文都将分类和机器学习作为一种解决方案.由于我没有看到分类如何有用,因为所有图像彼此非常相似(车牌图片),我想与过去遇到过类似问题的人讨论想法,或者甚至是某些人关于如何解决这个问题的线索.我一直在努力设法解决这个性能问题很长一段时间,但没有多少成功.

opencv image-processing cbir

5
推荐指数
1
解决办法
351
查看次数

平均平均精度 (MAP)

我正在使用平均平均精度 (MAP) 来评估基于内容的图像检索系统的性能。如图所示,是查询精度的平均值。 在此处输入图片说明

在我的数据库中,我有 200 张图像,包含 4 个类别,每个类别 50 张图像,我想用 4 个查询(每个类别,一个查询)进行检索,我可以只为检索到的前 10 个图像计算 MAP 吗?或者我必须为 50 个相关图像计算它?

image-processing cbir

5
推荐指数
0
解决办法
761
查看次数

使用 pHash 搜索庞大的图像数据库,最好的方法是什么?

我需要搜索一个巨大的图像数据库以使用 pHash 查找可能的重复项,假设这些图像记录具有使用 pHash 生成的哈希码。

现在我必须比较一个新图像,我必须使用 pHash 针对现有记录为此创建哈希。但根据我的理解,有比较并不像

hash1 - has2 < threshold
Run Code Online (Sandbox Code Playgroud)

看起来我需要将两个哈希码传递到 pHash API 中进行匹配。所以我必须从数据库中批量检索所有哈希码并使用 pHash API 一一比较。

但是如果我有大约 1000 张图像在队列中与数百万已经存在的图像进行比较,这看起来不是最好的方法。

我需要知道以下内容。

  1. 我对使用 pHash 与现有图像数据库进行比较的理解/方法是否正确?
  2. 有没有更好的方法来处理这个问题(不使用像里拉这样的 cbir 库)?
  3. 我听说有一种叫做 dHash 的算法,它也可以用于与哈希码的图像比较。是否有任何 java 库用于此,可以将其与 pHash 一起使用以优化大图像和重复图像处理任务的任务。

提前致谢。

java image-processing duplicate-removal cbir phash

4
推荐指数
1
解决办法
2703
查看次数

为什么SIFT描述符是规模不变的?

我的理解:SIFT描述符使用从16x16邻域像素计算的方向梯度的直方图.大图像中的16x16区域可以是非常小的区域,例如猫爪上的一根头发的1/10,当您将目标图像调整为小尺寸时,围绕相同关键点的16x​​16邻域可以是大部分的图像,例如猫的爪子使用SIFT描述符将原始图像与调整大小的图像进行比较是没有意义的,任何人都可以告诉我我的理解有什么问题吗?

image-processing image-recognition computer-vision cbir

4
推荐指数
1
解决办法
928
查看次数

matlab的图像处理工具包的性能

我听说Matlab的图像处理库与Java的图像处理库相比很慢.

真的吗 ??

如果是这样,那么使用Matlab 实现像CBIR图像搜索引擎这样的应用程序是否可行?

matlab image-processing cbir

3
推荐指数
1
解决办法
513
查看次数

匹配图像到图像集合

我有大量的卡片图像和一张特定卡片的照片.我可以使用哪些工具来查找哪些图像与我的图像最相似?

这是集合示例:

这是我想要找到的:

image-processing cbir

3
推荐指数
1
解决办法
1983
查看次数

在MATLAB中使用颜色直方图的基于内容的图像检索和精确调用图

到目前为止,我已经能够在CBIR系统中绘制灰度图像的Precision-Recall图.但是,我想知道如何对RGB图像执行相同的处理.

我的代码:

Inp1=rgb2gray(imread('D:\visionImages\c1\1.ppm'));
figure, imshow(Inp1), title('Input image 1');
num_bins = 32;
A = imhist(Inp1, num_bins);
srcFiles = dir('D:\visionImages\c1\*.ppm');  
B = zeros(num_bins, 30); 
ptr=1;
for i = 1 : length(srcFiles)
    filename = strcat('D:\visionImages\c1\',srcFiles(i).name);
    I = imread(filename);
    I=rgb2gray(I);
    B(:,ptr) = imhist(I, num_bins); 
    ptr=ptr+1;                                                      
end

% histogram intersection
a = size(A,2); b = size(B,2); 
K = zeros(a, b);
for i = 1:a
  Va = repmat(A(:,i),1,b);
  K(i,:) = 0.5*sum(Va + B - abs(Va - B));
end

num_images = 30;
sims=K
relevant_IDs = [1 2 …
Run Code Online (Sandbox Code Playgroud)

matlab image-processing computer-vision cbir

3
推荐指数
1
解决办法
1279
查看次数