присвоение имени каждому сегменту изображения в matlab

#matlab #matlab-figure #matlab-guide

#matlab #matlab-рисунок #matlab-руководство

Вопрос:

У меня есть изображение размером 640X480. Я хочу разделить его на 40X40, а затем применить общую операцию к каждому сегменту. итак, я сделал что-то вроде этого:

 A= imread('image.jpg');
for a=0:11;
    for b= 0:15;
        B=A((1 a*40):(a 1)*40,(1 b*40):(b 1)*40);
             ....... the common program for each segment........
        C= resu<        %result of the operation
    end
end
  

Мой вопрос в том, как я могу пометить C по-разному для каждого сегмента, чтобы я мог использовать их в дальнейшем для добавления этих сегментов обратно или еще.
Я попытался определить B что-то вроде этого:

 A= imread('image.jpg');
for a=0:11;
    for b= 0:15;
        B=A((1 a*40):(a 1)*40,(1 b*40):(b 1)*40);
             ....... the common program for each segment........
        C((a 1),(b 1))= result    %result of the operation
    end
end
  

Если бы это сработало, я мог бы использовать C(i,j) в качестве переменной (name), но это закончилось ошибкой. Что еще я могу сделать для маркировки результатов цикла for.

Надеюсь, мой вопрос понятен.

Комментарии:

1. Какую ошибку вы получаете? C((a 1),(b 1)) подходит для скалярных результатов, является ли ваш результат матрицей?

2. да, результатом также является матрица изображения размером 40X40.

Ответ №1:

Используйте массив ячеек для C

 C{ a 1, b 1 } = resu<
  

Многие из вас также хотят проверить blockproc

Ответ №2:

Если ваш результат всегда равен 40×40, я бы использовал матрицу результатов 4d:

 %preallocate at the beginning
C=nan(11,15,40,40)
  

И для заполнения в цикле

 C(a 1,b 1,:,:)=result
  

Комментарии:

1. Я попробовал то, что вы сказали, с этой простой матрицей 9X9. Но я получил взамен много матриц с разными матрицами, и имя также выглядит как ** C(:,:,x,y){x,y = 1,2,3] ** . что это за имя? а также оно не уникально, существует более одной матрицы для одного и того же ** C(:,:,x,y){x,y = 1,2,3] ** . A=[1,2,3,4,5,6,7,8,9;8,7,6,5,4,3,3,2,9;2,1,4,5,6,7,5,8,4;0,9,8,7,6,5,4,8,3;1,3,4,6,8,0,8,3,6;1,4,2,6,4,8,8,3,6;1,2,4,2,5,6,4,8,3;6,4,3,2,6,8,5,3,4;3,4,2,4,3,5,4,6,7]; C=nan(2,2,3,3) для a=0:2; для b=0:2; B= A((1 a * 3):(a 1)*3,(1 b* 3):(b 1)* 3); C(a 1,b 1,:,:)=B end end