在matlab中阅读相应的图像

时间:2015-07-24 17:34:54

标签: image matlab

我根据图层A1和层次中心计算了图像A1与图像1,图像2,图像3和图像4等不同图像之间的距离。 dist_1_1 {ii}包含4个值。我想找到dist_1_1 {ii}中的最小值。但是我显示了值1,我还想显示给出最小值的图像。请帮我。提前致谢

%% demo
clc,clear all,close all
plotFlag = 1;
depth = 6;

alef1 = im2bw(imread('C1.bmp'));   %% Binary image

vec1 = hierarchicalCentroid(alef1,depth,plotFlag);
% subplot(1,3,1);
A=[];
vec2=[];
dist_1_1=[];
for ii=1:4
    A{ii} = imread(['image' num2str(ii) '.bmp']);


% subplot(1,3,2);
vec2{ii} = hierarchicalCentroid(A{ii},depth,plotFlag);

%subplot(1,3,3);
%vec3 = hierarchicalCentroid(tav,depth,plotFlag);
% vec4=hierarchicalCentroid(A,depth,plotFlag);
% vec5=hierarchicalCentroid(A,depth,plotFlag);

dist_1_1{ii} = sum((vec1 - vec2{ii}) .^ 2);

[~,I] = min(dist_1_1{ii});
figure;
subplot(1,2,1);imshow(alef1);
subplot(1,2,2);imshow(A{I});
end

1 个答案:

答案 0 :(得分:1)

考虑到您的图片被命名为image1.pngimage2.png,... 首先,将图像读取并存储在单元格中

for ii=1:n
    A{ii} = imread(['image' num2str(ii) '.png']);
end

然后计算图像A1与其他图像之间的相似度:

ind = computeSimilarity(A1,A);  % here you compute the similarity and

(当然你需要一个for循环。)

将值存储在ind向量中之后:

ind  = [0.76,1.96,2.96];

然后找到最小值的索引并相应地选择图像

[~,I] = min(ind);
figure;
subplot(1,2,1);imshow(A1);
subplot(1,2,2);imshow(A{I});

您的代码应该纠正什么:

首先,避免在不需要时使用单元格,并在使用时正确定义单元格。您无法定义像A=[]这样的单元格数组。你应该这样做:A=cell(2,3)。例如,对于存储描述符的向量,您不需要单元格,只需将它们存储为矩阵,就像我一样。

其次,在此处发布代码时,请删除不必要的部分,例如注释图和命令。

然后,尝试按如下方式修改您的代码,我可能会对维度做出一些错误,但您可以获得主要想法。

并且还要记住,您不需要检查循环内的每个距离。首先计算向量,然后像我一样在一步中找到距离。

depth = 6;
alef1 = im2bw(imread('C1.bmp'));   
vec1 = hierarchicalCentroid(alef1,depth,0);

A=cell(1,4);
vMatrix=zeros(4,length(vec1));

for ii=1:4
    A{1,ii} = imread(['image' num2str(ii) '.bmp']);
    vecMatrix(ii,:) = hierarchicalCentroid(A{1,ii},depth,0);
end

dist = sum((repmat(vec1,4,1) - vMatrix) .^ 2,2);
[~,I] = min(dist);