Ошибка обработки изображения в MATLAB - PullRequest
0 голосов
/ 30 марта 2012

Мне дали определенный набор изображений (.png), я должен определить края каждого изображения, затем применить некоторую обработку изображений, но у меня проблема. Сначала я массив изображений следующим образом:

imgArray = {'image_1.png','image_2.png','image_3.png'}

Затем применил окантовку (sobel), используя встроенную функцию MATLAB edge так:

for i = 1:3
         image=imread(imgArray{i});
         image = edge(image,'sobel');
         imgArray{i} = image;
end

, основанный на этом исходном коде и моем понимании, что imageArray теперь содержит все 3 окантованных изображения. Позже мне нужно использовать изображения Edged с помощью этой команды image=imread(imgArray{i}); в другом месте кода, но это выдает ошибку. Я не понимаю, почему это происходит ??

EDIT:

Вот ошибка, которую я получаю:

Error in ==> ImageCompare at 43 image=imread(imgArray{i});

Ответы [ 2 ]

2 голосов
/ 30 марта 2012
imgArray = {'image_1.png','image_2.png','image_3.png'};
imgArrayEdged = strrep(imgArray, '.png', '_edged.png');
for i = 1 : length(imgArray)
    image = imread(imgArray{i});
    image = edge(image,'sobel');
    imwrite(image, imgArrayEdged{i});
end

% later...

for i = 1 : length(imgArray)
    if (your_condition)
        image = imread(imgArray{i});
    else
        image = imread(imgArrayEdged{i});
    end
end
0 голосов
/ 30 марта 2012

Ваш imgArray содержит имена файлов в виде строк.В вашем цикле вы читаете файлы изображений и заменяете каждую строку в массиве ячеек данными изображения.

Если позднее вам абсолютно необходимы строки имени файла, вы должны создать вторую переменную для хранения самих данных изображения.,Если вам требуются только оригинальные изображения, просто не используйте imread позже в коде!

Прочитав один раз файл изображения с imread, нет смысла тратить время на чтение файлов.снова.Кажется, что вы не совсем понимаете, в каком состоянии находятся ваши данные, когда они перемещаются по вашему коду.Я предлагаю вам использовать превосходный отладчик MATLAB для просмотра и изучения типа и содержимого переменных - вы быстро увидите, где imread, которому необходимо имя файла, не подходит.

...