我想要抓住一张脸部图像。我不知道matlab编程中的哪个命令会让我的脸变得混乱。你能指点我吗?
现在我想通过改变它的像素来加扰它。
答案 0 :(得分:0)
img = reshape(img(randperm(numel(img))), size(img));
替代解决方案:“按像素块加扰”
你可以这样做:
img = imread('http://www.ricbit.com/uploaded_images/lena-713374.jpg');
blockSize = 64;
nRows = size(img, 1) / blockSize;
nCols = size(img, 2) / blockSize;
scramble = mat2cell(img, ones(1, nRows) * blockSize, ones(1, nCols) * blockSize, size(img, 3));
scramble = cell2mat(reshape(scramble(randperm(nRows * nCols)), nRows, nCols));
subplot(1,2,1), imshow(img); title('Source image');
subplot(1,2,2), imshow(scramble); title('Scrambled image');
其中blockSize
是块的宽度和高度,以像素为单位(例如:64 x 64)
注意: blockSize必须是原始图像宽度和高度值的公因子。