资源简介
基于Matlab的最大熵模糊图像复原算法
代码片段和文件信息
im=imread(‘lin.bmp‘);%读入原始图像
figureimshow(im);title(‘original‘);%显示原始图像
LEN=10; THETA=0;
PSF=fspecial(‘motion‘LENTHETA);
blurred_image=imfilter(imPSF‘circular‘‘conv‘); %卷积生成模糊图像h1为对应的点扩展函数
%blurred_image=imnoise(blurred_image‘gaussian‘00.001); %加上均值为0方差为0.001的高斯噪声
figureimshow(blurred_image);title(‘motion blurred image‘); %显示运动模糊化图像
%-----------------------------------------
blurred_image=im2double(blurred_image);
mask=ones(size(blurred_image));%掩模图像支持
n=100; %迭代次数有些讲究
lambda=zeros(size(blurred_image));%lambda参数初始化为0,此时熵最大,但不满足约束方程
blurred_image=blurred_image+mean2(blurred_image)/1000;%保证大于0
totd=sum(sum(blurred_image));
for i=1:n
deblurred=exp(conv2(lambdaPSF‘same‘));%卷积和指数运算
deblurred=deblurred/sum(sum(deblurred));%归一化
reblurred=conv2(deblurredPSF‘same‘);%重模糊化图像
scale=sum(sum(reblurred.*mask))/totd;%动态归一化因子
%修正lambda的值
if i<50
lambda=lambda+(blurred_image*scale-reblurred).*mask;%前面50次迭代选择(g-h*reblured)作为修正项
else
reblurred=0.00001*(reblurred==0)+reblurred;
lambda=lambda+log(blurred_image*scale./reblurred).*mask;%后面选择ln(g)-ln(h*reblured)作为修正项
end
end
deblurred_image=deblurred/scale-mean2(blurred_image)/1000;%减去前面的增量
figureimshow(deblurred_image[]);title(‘max extropy deblurred image‘);%显示去模糊化后的恢复图像
%{
y2=deconvwnr(y1h); %采用维纳滤波方法进行图像恢复
figureimshow(y2);title(‘wiener‘); %显示维纳滤波恢复的效果
INITPSF=ones(size(h));
y3=deconvblind(y1INITPSF20); %采用盲恢复法进行图像恢复
figureimshow(y3);title(‘blind‘); %显示盲恢复效果
%}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2012-10-26 11:04 最大熵复原
目录 0 2012-10-26 11:04 最大熵复原\maximumentropy
文件 6966 2008-12-24 14:07 最大熵复原\maximumentropy\Blurred.jpg
文件 1853 2008-12-24 13:37 最大熵复原\maximumentropy\maxentropy.m
文件 11390 2008-05-08 15:08 最大熵复原\maximumentropy\origin.jpg
文件 9679 2008-12-24 14:06 最大熵复原\maximumentropy\restored.jpg
文件 748 2008-12-24 14:08 最大熵复原\maximumentropy\testentropy.m
文件 22 2008-12-24 14:08 最大熵复原\maximumentropy\说明.txt
文件 1769 2010-06-24 18:05 最大熵复原\My_maxentropy.m
----------- --------- ---------- ----- ----
32427 9
相关资源
- 天线阵的波束形成在MATLAB仿真程序及
- 非线性SVM算法-matlab实现
- 《MATLAB 智能算法超级学习手册》-程序
- 组合导航matlab程序
- 读取txt文件内容matlab代码实现
- Matlab实现基于相关的模板匹配程序
- matlab优化工具箱讲解
- 基于MATLAB的快速傅里叶变换
- 光纤传输中的分布傅立叶算法matlab实
- 基于matlab的图像处理源程序
- matlab 椭圆拟合程序
- 算术编码解码matlab源代码
- optical_flow 光流法 matlab 实现程序
- 引导图像滤波器 Matlab实现
- 分形几何中一些经典图形的Matlab画法
- OFDM系统MATLAB仿真代码
- SVM工具箱(matlab中运行)
- 图像小波变换MatLab源代码
- LU分解的MATLAB实现
- 冈萨雷斯数字图像处理matlab版(第三
- 替代数据法的matlab程序
- 用matlab实现的多站定位系统性能仿真
- 通过不同方法进行粗糙集属性约简m
- k近邻算法matlab实现
- matlab识别系统
- 神经网络分类matlab程序
- matlab正弦信号发生器的设计
- matlab程序用Hopfield网络解决TSP
- 实例matlab 编程100个常用程序
- 用MATLAB(BPSK仿真 直接扩频)
评论
共有 条评论