资源简介
自己写的利用贪婪算法获取收敛轮廓的主动轮廓算法matlab程序,可以实现自动初始化轮廓,并且初始轮廓不需要全部包含目标。
压缩包中包括:matlab程序,运行说明及参考文献
希望对学习active contour 的您有用~~
压缩包中包括:matlab程序,运行说明及参考文献
希望对学习active contour 的您有用~~
代码片段和文件信息
function DeformSnake
%轮廓变形
I = imread(‘imc.bmp‘);
lstCtrlPt = InitSnake; %控制点
imshow(I);
hold on
plot(lstCtrlPt(1:)lstCtrlPt(2:)‘go‘);
[noUse NCtrlPt] = size(lstCtrlPt); %NCtrlPt:轮廓控制点数
[imHeight imWidth noUse] = size(I);
param = [0.30.10.5]‘; %[alphabetagamma]‘
THRESHOLD1 = 100; %梯度平方最小差距
THRESHOLD2 = 0.05; %此次移动点数点总控制点数最小比例
rPtMoved = 1; %此次移动点数点总控制点数比例
I = I(::1); %转换成8位灰度图
I= double(I);
I = gaussMask(I); %高斯模糊
Igrad = edge_detect(I);%求图像梯度
nCount = 0;
while rPtMoved >= THRESHOLD2
%%****************初始化轮廓****************%%
lstCtrlPt = snakeInterp(lstCtrlPt);
[noUse NCtrlPt] = size(lstCtrlPt); %NCtrlPt:轮廓控制点数
%%************************轮廓变形*************************%%
nPtMoved = 0;
i = 1;
while i <= NCtrlPt
gradIadj = Igrad(lstCtrlPt(2i)-2:lstCtrlPt(2i)+2lstCtrlPt(1i)-2:lstCtrlPt(1i)+2);
Max = max(gradIadj.^2);
Min = min(gradIadj.^2);
%保证 Max-Min >= THRESHOLD1
if Max(1)-Min(1) < THRESHOLD1
Min(1) = Max(1)-THRESHOLD1;
end
%dist:相邻两点的距离和davg:平均距离
dist = sqrt(sum(([lstCtrlPt(:2:NCtrlPt) lstCtrlPt(:1)]-lstCtrlPt).^2));
davg = sum(dist)/NCtrlPt;
%计算邻域内每个点的能量
for yOffset = -2:2
for xOffset = -2:2
%当前邻域中的点:pt
pt = [lstCtrlPt(1i)+xOffsetlstCtrlPt(2i)+yOffset]‘;
subList = [lstCtrlPt(:pre(iNCtrlPt)) pt lstCtrlPt(:next(iNCtrlPt))];
dist = sqrt(sum((subList(:2:3)-subList(:1:2)).^2));
%计算弹性能量:Eelastic
Eelastic = (davg-dist(1))^2;
%计算弯曲能量:Ebending
Ebending = sum((subList(:1)-2*pt+subList(:3)).^2);
%计算图像能量:Eimage
Eimage = (Min(1)-gradIadj(3+yOffset3+xOffset)^2)/(Max(1)-Min(1));
%将三个量保存起来:Energy
Energy((3+yOffset-1)*5+3+xOffset:) = [EelasticEbendingEimage];
end
end
MaxEelastic = max(Energy(:1));
MaxEbending = max(Energy(:2));
%单位化能量:
Energy(:1) = Energy(:1)/MaxEelastic;
Energy(:2) = Energy(:2)/MaxEbending;
Etotal = Energy*param;
%找能量最小点的坐标
index = find(Etotal == min(Etotal));
yOffset = ceil(index(1)/5)-3;
xOffset = index(1) -(2+yOffset)*5-3;
ptNewCtrl = [lstCtrlPt(1i)+xOffsetlstCtrlPt(2i)+yOffset]‘;
%更新控制点
if sum(ptNewCtrl ~= lstCtrlPt(:i))
nPtMoved = nPtMoved+1;
lstCtrlPt(:i)=ptNewCtrl;
end
i = i+1;
end
nCount = nCount+1;
rPtMoved = nPtMoved/NCtrlPt;
end
plot(lstCtrlPt(1:)lstCtrlPt(2:)‘b*‘);
%显示参数
legend(‘origional CtrlPt‘‘final CtrlPt‘);
paramStr{11} = [‘\alpha = ‘ num2str(param(11))];
paramStr{21} = [‘\beta = ‘ num2str(param(21))];
paramStr{31} =
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 646 2008-08-13 21:30 运行方式.txt
文件 714 2008-08-15 20:04 matlab\InitSnake.m
文件 463816 2008-05-12 20:46 matlab\ima.bmp
文件 284 2008-05-19 10:12 matlab\edge_detect.m
文件 231 2008-08-15 20:03 matlab\isInRegion.m
文件 0 2008-05-16 14:39 matlab\ToGrad.m
文件 499 2008-05-17 09:23 matlab\insertPt.m
文件 265198 2008-05-17 16:10 matlab\1_1_1p5.bmp
文件 120 2008-05-18 10:03 matlab\pre.m
文件 126 2008-05-18 10:01 matlab\next.m
文件 156120 2008-05-18 10:41 matlab\imb.bmp
文件 3338 2008-05-19 16:37 matlab\DeformSnake.m
文件 299 2008-05-19 08:59 matlab\gaussMask.m
文件 265198 2008-05-19 10:09 matlab\ima_1p5_1_3.bmp
文件 265198 2008-05-19 10:10 matlab\imb_1p5_1_3.bmp
文件 156120 2008-05-19 16:08 matlab\imc.bmp
文件 265198 2008-05-19 16:13 matlab\Snake不能收敛到凹陷示例.bmp
文件 810 2008-05-20 17:20 matlab\snakeInterp.m
..A.SH. 98 2008-06-02 22:59 matlab\desktop.ini
...D..R 0 2008-08-15 19:58 matlab
文件 709202 2008-05-12 08:44 Active Contour Models for ob
----------- --------- ---------- ----- ----
2553215 21
相关资源
- MATLAB contourlet工具箱
- MQ之ActiveMQ_纯手敲的.mmap
- 主动噪声控制,fxLMS Active-Noise-Contro
- contourlet工具箱186240
- MQ之ActiveMQ.mmap
- 主动轮廓模型图像分割程序 matlab
- 非下采样Contourlet变换工具包 nsct_too
- MATLAB去噪代码
- contourlet图像融合
- Matlab_Active-set算法和
- contourlet、小波去噪
- contourlet matlab 工具箱
- Contourlet工具箱
- ContourletMatlab去噪
- NSCT非下采样contoulet变换matlab代码
- MATLAB使用surf、contour3灵活绘制投影图
- 星座图扩展法Active Constellation Extensi
- SAR图像去噪matlab小波去噪、contourlet变
- Nonsubsampled Contourlet Transform 非下采样
- ActivePerl 5.20.2.2
- matlab多聚焦图像融合(contourlet)
- nonlocal-level-set [SIAM]Nonlocal Active Conto
- APF_PI+重复控制仿真
- contourlet_toolbox 基于非下采样contourle
- LBF “Implicit Active Contours Driven by Loca
- contourlet 基于contourlet的图像融合利用
- APF_model
- Reactive-Power-Optimization-matlab 程序为改进
- Contourlet contourlet图像融合的matlab源代
- paper-and-matlab-code 新发表论文Graph cut
评论
共有 条评论