Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 如何显示相对于查询图像具有最小欧氏距离的5幅图像_Matlab_Image Processing_Euclidean Distance - Fatal编程技术网

Matlab 如何显示相对于查询图像具有最小欧氏距离的5幅图像

Matlab 如何显示相对于查询图像具有最小欧氏距离的5幅图像,matlab,image-processing,euclidean-distance,Matlab,Image Processing,Euclidean Distance,假设我有一个查询图像,matlab中的数据库有10个图像。我可以读出并显示一个图像,该图像相对于查询图像具有最小的欧氏距离。但现在,我想从数据库中读取并显示至少5幅图像,这意味着我想在5个不同的窗口中读取并显示5幅图像 我的读取和显示具有最小欧氏距离的单个图像的程序如下所示: G=imread('spine.tif'); H = adapthisteq(G,'clipLimit',0.01,'Distribution','rayleigh'); [rows cols]=size(H); [

假设我有一个查询图像,matlab中的数据库有10个图像。我可以读出并显示一个图像,该图像相对于查询图像具有最小的欧氏距离。但现在,我想从数据库中读取并显示至少5幅图像,这意味着我想在5个不同的窗口中读取并显示5幅图像

我的读取和显示具有最小欧氏距离的单个图像的程序如下所示:

G=imread('spine.tif');

H = adapthisteq(G,'clipLimit',0.01,'Distribution','rayleigh');

[rows cols]=size(H);

[c1,s1]=wavedec2(H,1,'db1');

X=c1;

figure,imshow(G);

figure,imshow(H);

fileFolder=fullfile(matlabroot,'toolbox','images','imdata');

dirOutput=dir(fullfile(fileFolder,'*.tif'));

fileNames={dirOutput.name}

n=numel(fileNames)

g=zeros(1,n)

for k = 1 : n

fileNames1=strcat('fullfile(fileFolder)',fileNames(k))

I = imread(fileNames{k});

J = adapthisteq(I,'clipLimit',0.01,'Distribution','rayleigh');

J = imresize(J, [rows cols]);

[c2,s2]=wavedec2(J,1,'db1');

Y=c2;

E_distance = sqrt(sum((X-Y).^2));

g(1,k)=E_distance;

if g(1,k)==0

    w=k;
    end
end

disp(g);

II=imread(fileNames{w});

figure, imshow(II);

我的问题是,如何在五个不同的窗口中读取和显示该数据库中的至少五个图像。

如果我正确理解了您的代码,您当前只显示距离等于零的图像(
如果g(1,k)=0,w=k;end
),而不是距离最小的图像

如果距离在
g
中,只需对数组排序并取前五个

[sorted,IX] = sort(g);
firstFiveIndexes = IX(1:5);

for I = 1:length(firstFiveIndexes)
  figure;imshow(imread(fileNames{firstFiveIndexes(I)}));
end

如果您有许多图像,则遍历数组并保持五个最小距离比排序要快,但在我看来,这并不值得费事

我想计算一幅给定图像的欧几里德距离,每5幅图像一幅接一幅,我想看看5幅图像中哪一幅欧几里德距离最小,然后一幅接一幅地显示出来……请帮助我……谢谢谢谢你们,但它并没有显示5幅图像……它显示了5幅以上的图像……如何显示5幅欧几里德距离最小的图像距离代码对我来说很好用。它应该只显示五个图像。您的代码还显示查询图像和调整对比度的图像。你不是指这些吗?这是我确切的消息来源。我必须更改matlab图像的路径,并排除非灰度图像,才能使用我的matlab版本。如果它仍然不适用于您,那么请向我们提供更多关于到底是什么错误以及输出是什么的信息。它总共显示了18幅图像以及查询图像和对比度调整图像。很抱歉,我做错了……thanx很多..它有效..非常感谢您,先生