图像边缘检测基于matlab模拟退火算法图像边缘检测含Matlab源码 2398期

Posted 海神之光

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了图像边缘检测基于matlab模拟退火算法图像边缘检测含Matlab源码 2398期相关的知识,希望对你有一定的参考价值。

⛄一、模拟退火算法图像边缘检测

1 模拟退火算法
模拟退火是一种通用的概率算法, 受固体退火原理的启发而产生, 当对固体加热时, 内能不断增大, 内部的分子做剧烈的无序运动;当降温时, 所有分子的运动逐渐变得有序, 最后到常温时达到基态, 内能恢复为最小[9].由Metropolis准则可知, 分子在温度T的时候趋向平衡的概率P为

其中, k为Boltzmann常数, ΔE为在温度为T时的内能变化量.把固体退火模拟组合优化问题, 把内能E模拟成目标函数值, 把温度T演化成为控制参数[10].从初始解和控制参数初值开始, 对当前解进行迭代.与此同时, 逐渐减小控制参数, 当满足算法终止条件时, 此时的解就是近似最优解.模拟退火算法具有概率的全局优化性能, 适用于在一定的时间内, 求得一个在大的搜索空间内的最优解.

⛄二、部分源代码

%% 清除变量
clc;
clear;
pic=imread(‘ant.jpg’);
pic=rgb2gray(pic);
%-------------------------------------------------------
%滤波
polished1=[-2.2 -0.8 -0.6 ;0 0 0 ;2.2 0.8 0.6 ];
polished11=[2.2 0.8 0.6 ;0 0 0 ;-2.2 -0.8 -0.6 ];
polished111=[-0.1 -0.8 -0.6 ;0 0 0;0.1 0.8 0.6 ];
polished1111=[0.1 0.8 0.6 ;0 0 0 ;-0.1 -0.8 -0.6 ];
polished2=polished1’;
polished22=polished11’;
polished222=polished111’;
polished2222=polished1111’;
%--------------------------------------------------------
% 组合滤波器
Pol1=[polished1 polished11 polished111 polished1111];
Pol1(:,end+1)=1;
Pol2=[polished2 polished22 polished222 polished2222];
Pol2(:,end+1)=2;
PolFil=[Pol1; Pol2];
% 交换过滤器矩阵行随机每次运行的生产率
PolFil_Swap = PolFil(randperm(size(PolFil, 1)), 😃;

%%数据准备
fordet=PolFil_Swap;
sizdet=size(fordet);
x=PolFil_Swap(:,1:sizdet(1,2)-1)‘;
t=PolFil_Swap(:,sizdet(1,2))’;
nx=sizdet(1,2)-1;
nt=1;
nSample=sizdet(1,1);
% 将表转换为结构
data.x=x;
data.t=t;
data.nx=nx;
data.nt=nt;
data.nSample=nSample;
nf=6;
% 成本函数
CostFunction=@(q) FSC(q,nf,data);

⛄三、运行结果


⛄四、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1]周岩,王雪瑞.基于模拟退火与蚁群算法的图像边缘检测[J].兰州工业学院学报. 2016,23(03)

3 备注
简介此部分摘自互联网,仅供参考,若侵权,联系删除

以上是关于图像边缘检测基于matlab模拟退火算法图像边缘检测含Matlab源码 2398期的主要内容,如果未能解决你的问题,请参考以下文章

图像分割基于matlab GUI医学图像均值聚类+OUST+区域生长法图像分割含Matlab源码 2210期

图像的亚像素边缘检测 MATLAB代码

用matlab如何通过图像分割来检测边界

边缘检测基于matlab八方向sobel图像边缘检测含Matlab源码 1865期

毕设题目:Matlab图像边缘检测

基于MATLAB的Sobel边缘检测算法实现