【图像分割】基于各向异性热扩散方程的图像分割附matlab代码

简介: 【图像分割】基于各向异性热扩散方程的图像分割附matlab代码

1 简介

提出了一种基于各向异性扩散的图像分割算法.对现有的各向异性扩散的正则化方法进行了分析.根据微分几何中共形映射的有关理论,把原扩散方程分解为关于表面曲率的二阶方程,给出了分解式的正则化条件,保证了解的稳定性.通过对扩散系数的调节,提高了对各向异性扩散过程的控制能力.在形态学分割的基础上,通过能量函数最小化实现非线性尺度空间中的区域合并,消除了分水岭算法造成的严重过分割现象.实验结果表明,该算法的分割结果可为后续识别和理解提供较理想的方式.

2 部分代码

function [Normalized,X,Y] = AffineIm1(im, a, b, c, d, point1, point2)%分别对wndim的四个角进行仿射变换%f1,f2,f3,f4分别是目标图像的四个顶点Mysize = size(im);f1 = [a,0;0,a]*([cos(pi/b),-sin(pi/b);sin(pi/b),cos(pi/b)]*[1-point1,1-point2]');f2 = [a,0;0,a]*([cos(pi/b),-sin(pi/b);sin(pi/b),cos(pi/b)]*[1-point1,Mysize(1,2)-point2]');f3 = [a,0;0,a]*([cos(pi/b),-sin(pi/b);sin(pi/b),cos(pi/b)]*[Mysize(1,1)-point1,1-point2]');f4 = [a,0;0,a]*([cos(pi/b),-sin(pi/b);sin(pi/b),cos(pi/b)]*[Mysize(1,1)-point1,Mysize(1,2)-point2]');f1(1,1) = round(f1(1,1)+c);f1(2,1) = round(f1(2,1)+d);f2(1,1) = round(f2(1,1)+c);f2(2,1) = round(f2(2,1)+d);f3(1,1) = round(f3(1,1)+c);f3(2,1) = round(f3(2,1)+d);f4(1,1) = round(f4(1,1)+c);f4(2,1) = round(f4(2,1)+d);%找出被仿射后图像的外接矩形minx = min([f1(1,1),f2(1,1),f3(1,1),f4(1,1)]);maxx = max([f1(1,1),f2(1,1),f3(1,1),f4(1,1)]);miny = min([f1(2,1),f2(2,1),f3(2,1),f4(2,1)]);maxy = max([f1(2,1),f2(2,1),f3(2,1),f4(2,1)]);flagx = 1;flagy = 1;for i = minx:maxx    flagy = 1;    for j = miny:maxy        orco = inv([cos(pi/b),-sin(pi/b);sin(pi/b),cos(pi/b)])*([1/a,0;0,1/a]*([i,j]'-[c,d]'))+[point1,point2]';        if orco(1,1)<1 | orco(1,1)>Mysize(1,1) | orco(2,1)<1 | orco(2,1)>Mysize(1,2)            Normalized(flagx,flagy) = 0;        else            m = floor(orco(1,1));            n = floor(orco(2,1));            u = orco(1,1)-m;            v = orco(2,1)-n;%             if u>0.5 & v>0.5%                 Normalized(flagx,flagy) = wndim(m+1,n+1);%             elseif u>0.5 & v<0.5%                 Normalized(flagx,flagy) = wndim(m+1,n);%             elseif u<0.5 & v>0.5%                 Normalized(flagx,flagy) = wndim(m,n+1);%             elseif u<0.5 & v<0.5%                 Normalized(flagx,flagy) = wndim(m,n);%             end            Normalized(flagx,flagy) = round((1-u)*(1-v)*im(m,n) + (1-u)*v*im(m,n+1) + u*(1-v)*im(m+1,n) + u*v*im(m+1,n+1));        end        flagy = flagy+1;    end    flagx = flagx+1;endX = abs(minx);Y = abs(miny);% mysize = min([maxx-minx,maxy-miny]);% hlfsize = floor((mysize+1)/2)-5;% hlfsize = 30;% Normalized = Normalized(Xw(1,1)-hlfsize:Xw(1,1)+hlfsize,Xw(2,1)-hlfsize:Xw(2,1)+hlfsize);% % Temp = Temp(Xw(1,1)-hlfsize:Xw(1,1)+hlfsize,Xw(2,1)-hlfsize:Xw(2,1)+hlfsize);% [w,h] = size(Normalized);% Xw = [floor(w/2)+1,floor(w/2)+1]';

3 仿真结果

4 参考文献

[1]彭启民, 贾云得. 基于各向异性扩散的图像分割算法[J]. 北京理工大学学报, 2005, 25(4):4.

博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。

部分理论引用网络文献,若有侵权联系博主删除。

相关文章
|
1天前
|
数据安全/隐私保护
地震波功率谱密度函数、功率谱密度曲线,反应谱转功率谱,matlab代码
地震波格式转换、时程转换、峰值调整、规范反应谱、计算反应谱、计算持时、生成人工波、时频域转换、数据滤波、基线校正、Arias截波、傅里叶变换、耐震时程曲线、脉冲波合成与提取、三联反应谱、地震动参数、延性反应谱、地震波缩尺、功率谱密度
|
1天前
|
数据安全/隐私保护
耐震时程曲线,matlab代码,自定义反应谱与地震波,优化源代码,地震波耐震时程曲线
地震波格式转换、时程转换、峰值调整、规范反应谱、计算反应谱、计算持时、生成人工波、时频域转换、数据滤波、基线校正、Arias截波、傅里叶变换、耐震时程曲线、脉冲波合成与提取、三联反应谱、地震动参数、延性反应谱、地震波缩尺、功率谱密度
基于混合整数规划的微网储能电池容量规划(matlab代码)
基于混合整数规划的微网储能电池容量规划(matlab代码)
|
1天前
|
算法 调度
面向配电网韧性提升的移动储能预布局与动态调度策略(matlab代码)
面向配电网韧性提升的移动储能预布局与动态调度策略(matlab代码)
|
1天前
|
算法 调度
含多微网租赁共享储能的配电网博弈优化调度(含matlab代码)
含多微网租赁共享储能的配电网博弈优化调度(含matlab代码)
|
1天前
|
运维 算法
基于改进遗传算法的配电网故障定位(matlab代码)
基于改进遗传算法的配电网故障定位(matlab代码)
|
1天前
|
Serverless
基于Logistic函数的负荷需求响应(matlab代码)
基于Logistic函数的负荷需求响应(matlab代码)
|
1天前
|
供应链 算法
基于分布式优化的多产消者非合作博弈能量共享(Matlab代码)
基于分布式优化的多产消者非合作博弈能量共享(Matlab代码)
|
1天前
|
算法 调度
基于多目标粒子群算法冷热电联供综合能源系统运行优化(matlab代码)
基于多目标粒子群算法冷热电联供综合能源系统运行优化(matlab代码)
|
1天前
|
算法 调度 SoC
电动汽车充放电V2G模型(Matlab代码)
电动汽车充放电V2G模型(Matlab代码)

热门文章

最新文章