matlab置乱图像复原

matlab置乱图像复原,第1张

首先,你恢复后的图像就是imshow(b),所以没必要做复原。如果只知道imshow(a)那么根据你的算法也无法进行复原,因为你置乱的算法不具有可逆性。

有兴趣你可以通过数据方法证明:即对矩阵中的元素取余具有不可逆性。

举一个简单的例子:

mod(5,3)=2 %5对3取余

那么当你知道2和3怎么得到5呢?答案是不可能,因为你可以得到5,8,11.....你不知道哪个才是你真正要的答案。

clcclear all

%读原始图像%

format long

Blurred=imread('fig525(b).bmp')

subplot(1,2,1)imshow( Blurred)title('原图像')

%自编函数进行维纳滤波%

k=0.0025

[m,n]=size(Blurred)

spectrum=zeros(m,n)

H=zeros(m,n)

for u=1:m

for v=1:n

H(u,v)=exp(-k*((u-m/2)^2+(v-n/2)^2)^(5/6))

spectrum(u,v)=H(u,v)^2

end

end

f=double(Blurred)

F1=fftshift(fft2(f))

HW=H./(spectrum+0.001)

restore1=HW.*F1

restored=real(ifft2(ifftshift(restore1)))

subplot(1,2,2)imshow(restored,[])title('自编函数进行维纳滤波')

%调用matlab提供的维纳滤波函数%

figure

hw1=real(ifft2(ifftshift(H)))%转化到空域上来

result1=deconvwnr(Blurred,hw1,0.001)

result2=ifftshift(result1)%再去图像进行1,3象限对调,2与4象限对调

subplot(1,2,1)imshow(result2,[])title('调用维纳滤波函数')

PSF

=

fspecial('motion',len,ang)

%建立扩散子,其中len是模糊长度,ang是模糊角度

img2=deconvlucy(img,PSF,n)

%用lucy-richardson方法复原图像,其中img是运动模糊图像,PSF是扩散子,n是迭代次数,img2是复原图像


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7778247.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-09
下一篇 2023-04-09

发表评论

登录后才能评论

评论列表(0条)

保存