Мне нужно было разделить изображение в оттенках серого в равных частях, поэтому я использовал функцию mat2cell
. Затем мне пришлось выравнивать каждую из частей отдельно, для этой цели я использовал функцию histeq
. Для этого я повторно использовал одну и ту же переменную массива ячеек. Вот код:Как создать одиночное изображение из массива ячеек матриц в Matlab?
height=round(size(img,1)/number_of_divisions);
length=round(size(img,2)/number_of_divisions);
M=zeros(number_of_divisions,1);
N=zeros(1,number_of_divisions);
M(1:number_of_divisions)=height;
N(1:number_of_divisions)=length;
aux=mat2cell(img,M,N);
for i=1:size(aux,1)
for j=1:size(aux,2)
aux{i,j}=histeq(aux{i,j},256);
end
end
Итак, как мне объединить каждую ячейку в одно изображение?
Просто заметил ваши первые буксирные тросы не работают всегда. Для size '[1001,1001]' и 'number_of_divisions' он терпит неудачу. Еще одна причина использовать 'blockproc' – Daniel
да, это правда, спасибо. Я пытался открыть его сам, но я до сих пор не понимаю, что делает «blockproc» с пикселями, которые не будут «приняты», когда деление пикселей по числу блоков не является целым числом (причина он не работает также с mat2cell). Не могли бы вы объяснить мне, пожалуйста? – user2952272
'blockproc' использует размер, который вы передаете, и последняя строка/столбец блоков при необходимости меньше. – Daniel