Имеется изображение X с размером N * M, строка M, столбец N. Есть еще 2 изображения A, B того же размера, что и X. Цель состоит в том, чтобы перемешать строки X со строками, извлеченными из A, и перемешать столбцы X со столбцами, извлеченными из B, что приводит к полностью измененному изображению.
Я застрял в точке, где это одновременно происходит. Я знаю об операторе двоеточия, с которым выполняется код, но для квадратного изображения. Пожалуйста, помогите, как это сделать.
X=imread('picture.jpg');
[r c]=size(X);
[dummy,rowscrambleIdx]=sort(A,1);
X_shuffled=X;
[dummy,colscrambleIdx]=sort(B,2);
РЕДАКТИРОВАТЬ : следующий код работает для квадратного изображения, и я хочу сделать аналогичную операцию для изображения прямоугольного размера. Однако этот код не работает для прямоугольного изображения. Я пытался заставить первый код следовать аналогичной логике, но он не работает для неквадратичного RGB-изображения, скажем, 256 * 240 * 3, размер
X=imread('picture.jpg');
[dummy,scrambleIdx]=sort(A(:));
X_shuffled=X;
X_shuffled(:)=A(scrambleIdx);
%now unscrambling
[dummy,unscrambleIdx] = sort(scrambleIdx);
X_recovered=X;
X_recovered(:)=X_shuffled(unscrambleIdx);