gpt4 book ai didi

matlab - 使用直方图比较两个图像

转载 作者:太空宇宙 更新时间:2023-11-03 19:32:31 24 4
gpt4 key购买 nike

我想找到两个图像的直方图并使用欧氏距离找到相似性。我正在尝试使用 imhist 命令,但出现以下错误:

Error using ==> iptcheckinput
Function IMHIST expected its first input, I or X, to be two-dimensional.

我的代码如下:

% read two images
Im1 = imread('1.jpg');
Im2 = imread('2.jpg');

% convert images to type double (range from from 0 to 1 instead of from 0 to 255)
Im1 = im2double(Im1);
Im2 = im2double(Im2);

% Calculate the Normalized Histogram of Image 1 and Image 2
hn1 = imhist(Im1)./numel(Im1);
hn2 = imhist(Im2)./numel(Im2);

% Calculate the histogram error
f = sum((hn1 - hn2).^2);
f; %display the result to console

最佳答案

的确,直方图旨在表示单个 channel 的色调值的重新分配。彩色图像通常是 3 channel 图像(大多数情况下为红色、绿色、蓝色)。

Ghaul 的方法应该可以正常工作。如果你想更精确,你可以提取每个 channel 并计算它的直方图:

Red1 = Im1(:, :, 1);
Green1 = Im1(:, :, 2);
Blue1 = Im1(:, :, 3);
HnBlue1 = imhist(Blue1)./numel(Blue1);

您现在可以根据 3 个欧氏距离(每个 channel 1 个)定义评估函数:

FBlue = sum((HnBlue1 - HnBlue2).^2);
FRed= sum((HnRed1 - HnRed2).^2);
...
F = Alpha*FBlue + Beta*FRed + Gamma*FGreen //as an example

因此,您可以在距离定义中强调一种颜色或另一种颜色。如果您要测试的图像具有特定颜色,这可能会很有用。

这是 Ghaul 方法的替代方法,但其等效方法是将 Alpha、Beta 和 Gamma 设置为“0.2989 * R + 0.5870 * G + 0.1140 * B”,如 Andrey 所述。

关于matlab - 使用直方图比较两个图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5475815/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com