【图像重建】基于遗传算法实现二值图像重建附matlab代码
1 内容介绍
图像质量的优劣对人类视觉和各种计算机视觉系统都十分重要,因此图像复原一直是数字图像处理的重要研究内容。作为图像复原的一个分支,超分辨率图像重建问题得到人们越来越多的关注。在视频监控、卫星成像和医学诊断等应用中,由于物理条件的限制,人们获得的图像分辨率较低,无法满足实际需要。超分辨率图像重建技术就是利用这些低分辨率图像序列中各帧图像之间的冗余信息,重构出高分辨率图像。 提出了一种基于遗传算法的图象重建算法,该算法通过构造合适的基因编码方案及个体适应度评价函数,并对遗传算法进行优化,克服了Kuba算法和谷士文AI算法的缺陷,可以成功地解决由带有噪声的二维正交投影重建二维图象的问题,并简化了约束条件.实验结果表明该算法是成功有效的.
2 仿真代码
% Written by Dr. Seyedali Mirjalili
% To watch videos on this algorithm, enrol to my courses with 95% discount using the following links:
% *************************************************************************************************************************************************
% A course on "Optimization Problems and Algorithms: how to understand, formulation, and solve optimization problems":
% https://www.udemy.com/optimisation/?couponCode=MATHWORKSREF
% *************************************************************************************************************************************************
% "Introduction to Genetic Algorithms: Theory and Applications"
% https://www.udemy.com/geneticalgorithm/?couponCode=MATHWORKSREF
% *************************************************************************************************************************************************
function [BestChrom] = GeneticAlgorithm (M , N, MaxGen , Pc, Pm , Er , obj, visuailzation)
load IMG_REF_BINARY;
cgcurve = zeros(1 , MaxGen);
%% Initialization
[ population ] = initialization(M, N);
for i = 1 : M
population.Chromosomes(i).fitness = obj( population.Chromosomes(i).Gene(:), IMG_REF_BINARY);
end
g = 1;
disp(['Generation #' , num2str(g)]);
[max_val , indx] = sort([ population.Chromosomes(:).fitness ] , 'descend');
cgcurve(g) = population.Chromosomes(indx(1)).fitness;
subplot(1,2,2)
%% Main loop
for g = 2 : MaxGen
disp(['Generation #' , num2str(g)]);
for k = 1: 2: M
% Selection
[ parent1, parent2] = selection(population);
% Crossover
[child1 , child2] = crossover(parent1 , parent2, Pc, 'double');
% Mutation
[child1] = mutation(child1, Pm);
[child2] = mutation(child2, Pm);
newPopulation.Chromosomes(k).Gene = child1.Gene;
newPopulation.Chromosomes(k+1).Gene = child2.Gene;
end
% Calcualte the fitness values
for i = 1 : M
newPopulation.Chromosomes(i).fitness = obj( newPopulation.Chromosomes(i).Gene(:), IMG_REF_BINARY);
end
% Elitism
[ newPopulation ] = elitism(population, newPopulation, Er);
cgcurve(g) = newPopulation.Chromosomes(1).fitness;
population = newPopulation; % Replace the previous population with the newly made
BestChrom.Gene = population.Chromosomes(1).Gene;
BestChrom.Fitness = population.Chromosomes(1).fitness;
col_no = size(IMG_REF_BINARY,2);
Recons_IMG = vec2mat(BestChrom.Gene , col_no);
Recons_IMG = Recons_IMG .* 255;
% if rem(g , 100) == 0
subplot(1,2,2)
imshow(Recons_IMG);
title(['Generation #' , num2str(g), ' Error = ' , num2str(-BestChrom.Fitness)])
drawnow
% end
end
if visuailzation == 1
figure
plot( 1 : MaxGen , cgcurve);
xlabel('Generation');
ylabel('Fitness of the best elite')
end
end
3 运行结果
4 参考文献
[1]伍晓平, 谷士文, 费耀平,等. 基于遗传算法的图象重建算法[J]. 计算技术与自动化, 2000, 19(1):4.
博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。
部分理论引用网络文献,若有侵权联系博主删除。
【图像重建】基于遗传算法实现二值图像重建附matlab代码相关推荐
- 【配电网重构】基于遗传算法实现配电网重构附matlab代码
✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信.
- 数字水印进阶篇——基于DWT-SVD的数字水印(附matlab代码)
引言 之前写过一篇介绍空间域LSB的数字水印算法,有需要的朋友可以看看 数字水印入门篇--空间域LSB的数字水印(附matlab代码) 因空间域的数字水印是通过直接在图像上改变像素的方式来隐藏水印信息 ...
- 扩展卡尔曼滤波(EKF)估计SOC代码2详解,基于二阶RC模型(附MATLAB代码)
上次分享了一个扩展卡尔曼滤波估计SOC的代码,得到了很多小伙伴的支持,今天再分享一个很好用的扩展卡尔曼滤波估计SOC的程序.使用MATLAB语言完成程序的编写. 有关EKF的推导及原理请看我写的另一个 ...
- 【图像重建】基于正则化的图像超分辨重建附matlab代码
1 简介 高分辨率的影像能更详细地表示景物的细节信息,在诸多领域 (如计算机视觉.遥感.医学等 )有着广泛的应用.目前,高分辨率影像主要通过改进高精度的光 学 器 件 及 传 感 器 等 硬 件 设 ...
- 【背包问题】基于禁忌搜索算法求解背包问题附Matlab代码
1 内容介绍 设计了一种基于禁忌搜索的遗传算法,利用遗传算法提供的并行搜索主框架,结合禁忌算法的个体串行搜索方式,能扩大搜索空间,快速实现全局优化.把基于禁忌搜索的遗传算法与启发式方法相结合用来求解背 ...
- 基于遗传算法解决TSP问题(Matlab代码实现)
目录 1 概述 2 运行结果 3 Matlab代码实现 4 结语 5 参考文献 1 概述 旅行商问题是一个经典的路径规划问题,传统TSP假设客户位置和客户之间旅行时间是固定不变的,而在现实生活中交通状 ...
- 【优化调度】基于遗传算法实现产品自动排序问题matlab代码
1 简介 由于市场经济环境.国家政策.消费者多元化需求等多方面作用,制造型企业在更为复杂的市场背景下面对着更加激烈的竞争压力.随着人们生活水平逐渐提高和多元化消费需求的急速增长,依靠传统单一规模化生产 ...
- 【图像去噪】基于三边滤波器实现图像去噪附matlab代码
1 简介 近年来,随着计算机视觉领域的发展,雾天图像的清晰化问题逐渐成为该领域的研究热点.目前对于图像去雾技术的研究大体上可以分为两类[1]:基于大气散射物理模型的图像去雾方法和基于图像增强的去雾方法 ...
- 【预测模型-ELM预测】基于遗传算法优化极限学习机预测matlab代码
1 简介 针对变压器故障的特征,结合变压器油中气体分析法以及三比值法.提出了基于遗传算法改进极限学习机的故障诊断方法.由于输入层与隐含层的权值和阈值是随机产生.传统的极限学习机可能会使隐含层节点过多, ...
最新文章
- jodd忽略ssl证书_Jodd - Java界的瑞士军刀,无法想象的轻量级工具包
- SSL/TLS协议运行机制
- iOS开发网络篇—Reachability检测网络状态
- md5加密算法的C(C++)代码实现
- Python图像处理库PIL的ImageDraw模块之画出四边形
- Exchange2010安装配置篇二 自动安装
- JBoss主要版本下载链接一览
- ubuntu20.04 LTS安装谷歌拼音输入法
- opencv 颜色识别
- 地理社交网络中基于多目标组合优化的空间感知影响力联合最大化
- 传智博客JAVA基础第二十三天
- 如何在Mysql中运行SQL文件
- python线性回归实例 x轴坐标相同_python深度学习-tensorflow实现一个线性回归的案例...
- 动态申请权限---通讯录 及获取通讯录列表
- 读论文:Self-Attention ConvLSTM for Spatiotemporal Prediction
- html5饼图颜色渐变,Highcharts 渐变饼图
- 【Linux 性能优化系列】Linux 性能优化 -- CPU 性能篇(三) Linux 软中断
- 送一个大马给有需要的人,请不要做非法之事
- Hat trick [又名帽子戏法]
- js统计英语单词的个数
热门文章
- 用户手册应当由谁写?
- mysql的check语言_check在SQL语句中的意思是什么?
- vue axios传递FormData填坑,headers不显示,后台报错等等问题
- ImageJ 用户手册——第三部分(ImageJ扩展)
- 如何在 Windows 10 的同时安装 Ubuntu 20.04实现双系统
- 入门系列:gdb学习——函数调用时参数传递
- 谷歌刚刚发布了2500万个免费数据集,快来了解一下
- java怎么表示正无穷大_java中怎样表示一个无穷大?无穷小
- 如何用因果推断和实验驱动用户增长? | 7月28日TF67
- 最新综述:视频数据的无监督域适应