blockproc позволяет вам повторять только для одного изображения, но не мешает вам работать с любыми данными, которые вы хотите.Сигнатура пользовательской функции принимает в качестве входных данных «блочную структуру», которая содержит не только поле данных (которое используется во всех примерах blockproc), но также и несколько других полей, одним из которых является «location».Вы можете использовать это, чтобы определить «где вы находитесь» во входном изображении и определить, какие другие данные вам нужны для работы с этим блоком. Например,
, вот как вы можете сделать поэлементное умножение на 2 одинаковыхизображения.Это довольно неуклюжий пример, но просто здесь, чтобы продемонстрировать, как это могло бы выглядеть:
im1 = rand(100);
im2 = rand(100);
fun = @(bs) bs.data .* ...
im2(bs.location(1):bs.location(1)+9,bs.location(2):bs.location(2)+9);
im3 = blockproc(im1,[10 10],fun);
im4 = im1 .* im2;
isequal(im3,im4)
Используя поле «location» структуры блока, вы можете найти соответствующие части 2-го, 3-го, 4-го,и т. д. набор данных, необходимый для этого конкретного блока.
надеюсь, это поможет!
-brendan