matlab置乱图像复原
发布网友
发布时间:2022-04-23 09:30
我来回答
共3个回答
热心网友
时间:2023-10-09 14:00
首先,你恢复后的图像就是imshow(b),所以没必要做复原。如果只知道imshow(a);那么根据你的算法也无法进行复原,因为你置乱的算法不具有可逆性。
有兴趣你可以通过数据方法证明:即对矩阵中的元素取余具有不可逆性。
举一个简单的例子:
mod(5,3)=2 %5对3取余
那么当你知道2和3怎么得到5呢?答案是不可能,因为你可以得到5,8,11.....你不知道哪个才是你真正要的答案。
热心网友
时间:2023-10-09 14:01
ps:本人不是学图像处理的,可能见解不是很正确。
变换的核心在:
x1=mod(x+y,size(a,1));
y1=mod(x+2*y,size(a,2));
类似坐标变换
x1=x+y;
y1=x+2*y;
求出改变换的逆变换应该会有点帮助。逆变换为:
x=2*x1-y1;
y=-x1+y1;
按照相同的操作变化就行了。
变换程序如下:
function modifyImage_again
a=imread('D:\我的文档\logo_modif.jpg');
T=1;
b=a;
figure;
imshow(b);
while T<13
for x=1:size(a,1)
for y=1:size(a,2)
x1=mod(2*x-y,size(a,1));
y1=mod(-x+y,size(a,2));
temp(x1+1,y1+1)=a(x,y);
end
end
a=temp;
T=T+1;
end
figure;
imshow(a);
热心网友
时间:2023-10-09 14:01
f=checkerboard(8);
%读图像
psf=fspecial('gaussian',7,10);
%高斯核
sd=0.01;%噪声标准差
g=imnoise(imfilter(f,psf),'gaussian',0,sd^2);%图像中加入模糊核噪声
subplot(3,2,1);%三子图第一张
imshow(f),title('(a)');%画原图
subplot(3,2,2);%三子图第二张
imshow(g),title('(b)');%画降质图像
dampar=10*sd;%去模糊参数
lim=ceil(size(psf,1)/2);%坐标缩影
weight=zeros(size(g));%去模糊权重初始化
weight(lim+1:end-lim,lim+1:end-lim)=1;%去模糊权重赋值
numit=5;%迭代次数
f5=deconvlucy(g,psf,numit,dampar,weight);%去模糊
subplot(3,2,3);%三子图第三张
imshow(f5),title('(c)');%画复原图像