Matlab 置乱图像
我想使用matlab使用以下算法对图像进行置乱:Matlab 置乱图像,matlab,encryption,Matlab,Encryption,我想使用matlab使用以下算法对图像进行置乱: 将图像转换为W X H像素的灰度 计算每行和每列的总和 分别生成h&w元素范围(2^bit depenth-1)的随机变量Kc和Kr 求和的模2 如果行和的模2为零,则将第i行向右旋转Kr(i)数量,否则将其向左旋转Kr(i)数量。列的情况也类似 显示图像 问题在于使用matlab中的circshift命令将第i行旋转Kr(i)量。此函数不使用特定行或列的索引 %%Encryption till scrambled image rgb = imr
%%Encryption till scrambled image
rgb = imread('image.jpg');
I=rgb2gray(rgb);
[w,h]=size(I);
imshow(I);
title('Original grayscale');
info = imfinfo('image.jpg');
bit=info.BitDepth;
range=(2^bit)-1;
Kc=randi(range,[1,h]); %generating a random array Kc of h
Kr=randi(range,[1,w]); %generating random array Kr
alpha=sum(I); %sum of all column element creating an linear array of h columns
alpha1=sum(I,2); %sum of all row element creating an linear array of w rows
M=mod(alpha,2); %linear array of h column
M1=mod(alpha1,2); %linear array of w rows
for i=1:h
if M(1:i)==0
I1=circshift(I(:,i),-Kc(i)); %shifts up
else
I1=circshift(I(:,i),Kc(i)); %shifts down
end
end
for j=1:w
if M1(j:1)==0
I2=circshift(I1(j,:),Kr(j)); %shifts right
else
I2=circshift(I1(j,:),-Kr(j)); %shifts left
end
end
figure
imshow(I2);
title('Scrambled Image');`
circshift
作用于大于1行的数组。试试循环移位(I1(j,:))。并阅读帮助文件!:-)谢谢你,卡尔!。它起作用了