Вы можете написать for
петли, а затем просто одно изображения, которое хранит все плавленые результаты и неоднократно фьюзинг этого изображения с новым изображением вы читаете. Как, например, скажем, ваши изображения были названы из file1.jpg
в file50.jpg
, Вы могли бы сделать что-то вроде этого:
A = imread('file1.jpg');
for idx = 2 : 50
B = imread(['file' num2str(idx) '.jpg']); %// Read in the next image
A = imfuse(A, B, 'blend', 'Scaling', 'joint'); %// Fuse and store into A
end
Что выше код будет делать то, что он будет повторно прочитать в следующем изображении, и сплавить его с изображением, хранящимся в A
. На каждой итерации он займет то, что в настоящее время находится в A
, закрепите его новым изображением, затем сохраните его обратно в A
. Таким образом, по мере того, как мы продолжаем читать изображения, мы будем продолжать сплавлять новые изображения поверх тех изображений, которые были сплавлены ранее. После этого петля for
закончится, у вас будет 50 изображений, которые все слиты вместе.
Я не уверен, что даст вам желаемые результаты. В качестве иллюстрации возьмите 50 изображений в оттенках серого с одинаковыми диапазонами оттенков серого.Предположим, что значение оттенков серого для пикселя в '(p, q)' равно нулю для изображений 1-49, но на изображении 50 значение равно 100. Используя ваш метод, результирующее значение для пикселя '(p, q)' будет '50'. Но вполне разумно ожидать, что значение должно быть «2». – beaker
@beaker - Это очень верно. Это был выстрел, и я сказал, что это может работать. Я не был уверен, действительно ли это будет честью! Это была неудачная попытка, но я хочу посмотреть, что говорит OP, и если это сработает. Я действительно не знаю, как работает «imfuse», вероятно, я должен был взглянуть на документы перед тем, как написать ответ. – rayryeng
Согласен, желаемые результаты четко не указаны. Мне любопытно посмотреть, что говорит OP. – beaker