2015-07-24 2 views
-1

Я вычислил расстояние между изображением A1 и различными изображениями, такими как image1, image2, image3 и image4, на основе его иерархического центра. dist_1_1 {ii} содержит 4 значения. Я хочу найти минимальное значение, присутствующее в dist_1_1 {ii}. Но я показываю значение 1, а также хочу показать изображение, которое дает минимальное значение. Пожалуйста, помогите мне. Заранее спасибоПрочтите соответствующее изображение в matlab

%% 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

Задайте вопрос. Вы можете использовать 'imshow (A)' для отображения вашего изображения. –

+0

Сэр Я изменил свой вопрос, и я добавил несколько кодов. Я хочу, чтобы переменная имела наименьшее значение в dist_1_1 {ii}. Но она показывает значение one (1). Таким образом, A {I} показывает первое изображение в папке. dist_1_1 {ii} имеют значения 1.9009,1.6763,0.3698,1.1932 –

ответ

1

Учитывая, что изображения названы такие, как image1.png, image2.png ... первым, читать и сохранять изображения в камере

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

Затем вычислить сходство между изображением A1 и другие изображения: (., конечно, вам потребуется для цикла)

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

После хранятся значения в 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); 
+0

Thankyou для вашего руководства. Я узнал минимум, используя «MinVal = min (cell2mat (dist_1_1)); Теперь я хочу найти соответствующее изображение. MinVal дает минимальное значение «imshow (A (MinVal))» не дает соответствующего изображения. Как я его получу? Какие изменения нужно сделать, чтобы получить это? Помогите мне –

+0

При использовании функции «min» вы можете получить как минимальное значение, так и соответствующий индекс. '[M, I] = min (...)', тогда вы должны использовать индекс 'I' для вызова изображения не минимальное значение« M ». – NKN

+0

Сэр, переменная I дает только значение 3.I не знает причину –

Смежные вопросы