细化算法matlab
最简单的方法
最简单的方法是用matlab自带的函数:
BW2 = bwmorph(BW,'thin',n);
n是要细化迭代的次数,也可以是Inf(没有引号)。Inf表示算法会一直迭代直到图像不再改变。
算法原理参考 [1]。
稍微复杂点的方法
Zhang-Suen算法
原理简介:http://www.cnblogs.com/mikewolf2002/p/3321732.html
算法实现:http://www.chinabaike.com/t/9642/2014/0624/2547871.html
将下列三个m文件和主m文件放到一起,主m文件这样调用:BW2=zs(BW1);
zs.m
%zs.m
function out=zs(im)
%
%zs appises the Zhang-Suen skeletonization algorithm to image IM. IM must
%be binary.
%
luteven=makelut('zseven',3);
lutodd=makelut('zsodd',3);
done=0;
N=2;
last=im;
previous=applylut(last ,lutodd);
current=applylut(previous,luteven);
while done==0,
if all(current(:)==last(:)),
done=1;
end
N=N+1;
last=previous;
previous=current;
if mod(N,2)==0,
current=applylut(current,luteven);
else
current=applylut(current,lutodd);
end;end;
out=current;
end
zseven.m
%zseven.m
function out=zseven(nbhd)
s=sum(nbhd(:))-nbhd(5);
temp1=(2<=s)&&(s<=6);
p=[nbhd(1) nbhd(4) nbhd(7) nbhd(8) nbhd(9) nbhd(6) nbhd(3) nbhd(2)];
pp=[p(2:8) p(1)];
xp=sum((1-p).*pp);
temp2=(xp==1);
prod1=nbhd(4)*nbhd(8)*nbhd(2);
prod2=nbhd(4)*nbhd(6)*nbhd(2);
temp3=(prod1==0)&&(prod2==0);
if temp1&temp2&temp3&nbhd(5)==1
out=0;
else
out=nbhd(5);
end;
end
zsodd.m
%zsodd.m
function out=zsodd(nbhd)
s=sum(nbhd(:))-nbhd(5);
temp1=(2<=s)&&(s<=6);
p=[nbhd(1) nbhd(4) nbhd(7) nbhd(8) nbhd(9) nbhd(6) nbhd(3) nbhd(2)];
pp=[p(2:8) p(1)];
xp=sum((1-p).*pp);
temp2=(xp==1);
prod1=nbhd(4)*nbhd(8)*nbhd(6);
prod2=nbhd(8)*nbhd(6)*nbhd(2);
temp3=(prod1==0)&&(prod2==0);
if temp1&temp2&temp3&nbhd(5)==1
out=0;
else
out=nbhd(5);
end;
end
自己折腾的过程
参考[2]中骨架化的算法,不知道是算法写错了,还是本来论文就没有论述清楚,总是会把左上角给弄断,先记在下面,以后再改吧。
Isrc = imread('pic/0.bmp');
if ndims(Isrc) == 3I = rgb2gray(Isrc);
elseI = Isrc;
end
I = im2bw(I,0.5);
%外围扩展边界
[H,W] = size(I);
I = [zeros(2,W);I;zeros(2,W)];
I = [zeros(H+4,2),I,zeros(H+4,2)];
[H,W] = size(I);for k = 1:10 %迭代次数
p = zeros(8,1);
NzI = zeros(H,W);
ZI = zeros(H,W);
P024I = zeros(H,W);
P246I = zeros(H,W);
I2 = I;
for i = 2:H-1for j = 2:W-1if I(i,j) p(1) = I(i,j+1);p(2) = I(i-1,j+1);p(3) = I(i-1,j);p(4) = I(i-1,j-1);p(5) = I(i,j-1);p(6) = I(i+1,j-1);p(7) = I(i+1,j);p(8) = I(i+1,j+1);NzI(i,j) = sum(p);ZI(i,j) = sum(abs(diff(p)))+abs(p(8)-p(1));P024I(i,j) = p(1) * p(3) * p(5);P246I(i,j) = p(3) * p(5) * p(7);endend
end
for i = 3:H-1for j = 3:W-1if I(i,j)if ((NzI(i,j) >= 2) && (NzI(i,j) <= 6)) && ...(ZI(i,j) == 2) && ...((P024I(i,j)==0)||(ZI(i,j-1)~=2)) && ...((P246I(i,j)==0)||(ZI(i-1,j)~=2)) I2(i,j) = 0; end endend
end
I = I2;
end
figure(1);
subplot(121);
imshow(Isrc);
subplot(122);
imshow(I2);
[1]: Lam, L., Seong-Whan Lee, and Ching Y. Suen, “Thinning Methodologies-A Comprehensive Survey,” IEEE Transactions on Pattern Analysis and Machine Intelligence, Vol 14, No. 9, September 1992, page 879, bottom of first column through top of second column.
[2]周凤香. 工业生产线标签字符识别系统的设计与实现[D].电子科技大学,2013.
细化算法matlab相关推荐
- 文字细化算法matlab,[转载](转)二值图像的细化算法和源程序代码(Matlab)
二值图像的细化算法和源程序代码(Matlab) 有关图像细化算法,从方法上有很多,具体请参看各图像处理的经典教材,但有一本书,我记得是大概1980年代科学出版社出版的,是著名的Pavlidis编著,并 ...
- Rosenfeld细化算法 matlab(速度超慢)
其中Rosenfeld细化算法为并行算法,可以将图像进行分割计算 clear clc close all tic; img = rgb2gray(imread('3.png')); bw = imbi ...
- 文字细化算法matlab,细化算法matlab
最简单的方法 最简单的方法是用matlab自带的函数: BW2 = bwmorph(BW,'thin',n); n是要细化迭代的次数,也可以是Inf(没有引号).Inf表示算法会一直迭代直到图像不再改 ...
- dst matlab,DSTcode DST跟踪算法MATLAB代码,复杂环境中仿多目标 实现的单 Other systems 其他 272万源代码下载- www.pudn.com...
文件名称: DSTcode下载 收藏√ [ 5 4 3 2 1 ] 开发工具: matlab 文件大小: 82 KB 上传时间: 2017-03-17 下载次数: 0 提 供 者: Mar ...
- 图片缩放 算法 matlab,图像放大算法总结及MATLAB源程序.doc
图像放大算法总结及MATLAB源程序 1,插值算法(3种): (1)最邻近插值(近邻取样法): 最近插值的的思想很简单就是把这个非整数坐标作一个四舍五入,取最近的整数点坐标处的点的颜色.可见,最邻近插 ...
- TDOA定位的Chan算法MATLAB源代码
TDOA定位的Chan算法MATLAB源代码 . function [POS_ref,POS1,POS2,POS3,POS4] = TDOA_chan(R,Pbs,Q) %************** ...
- dijkstra算法matlab代码_头脑风暴优化(BSO)算法(附MATLAB代码)
BSO讲解https://www.zhihu.com/video/1252605855767736320 B站搜索:随心390,同步观看视频 各位小伙伴可在闲鱼搜索 优化算法交流地,即可搜索到官方闲鱼 ...
- Algorithm之PrA:PrA之nLP非线性规划算法+Matlab 优化工具箱的GUI求解非线性规划
Algorithm之PrA:PrA之nLP非线性规划算法+Matlab 优化工具箱的GUI求解非线性规划 目录 PrA之nLP非线性规划算法 操作图文教程 PrA之nLP非线性规划算法 (1).编写M ...
- matlab虚拟力,31无线传感网络布局优化的虚拟力导向粒子群算法MATLAB源代码
无线传感网络布局优化的虚拟力导向粒子群算法MATLAB源代码 本源代码主要参考了下面的文献:王雪, 王晟, 马俊杰. 无线传感器网络布局的虚拟力导向微粒群优化策略[J]. 电子学报, 2007, 11 ...
- 亮度均匀性 matlab,求:亮度保持的夜景图像直方图均衡算法 matlab程序
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 求:亮度保持的夜景图像直方图均衡算法 matlab程序 我是大四学生,最近在做一个论文,头疼死了,不知道这个论文的程序怎么写.这里是matlab论坛 我想 ...
最新文章
- c++文件操作一一读取文件内容
- Execute permission missing on User-Defined table Type
- new uk psw policy
- Mysql和mono,.net – Mac OS X Mono和MySql连接器问题
- 二叉排序树查找的c语言程序,C语言二叉排序(搜索)树实例
- Python is同一性运算符和==相等运算符区别
- PHP中获取星期的几种方法
- 用python把excel中的数据变成字典(复制代码即可用)
- 主从复制2——拥有海量数据主服务器的主从复制模型详细实现;
- 【Spark】sparksql中使用自定义函数
- JNI读取assets资源文件
- python开发wince_零基础学习WinCE开发
- 【莫队算法】【权值分块】bzoj3920 Yuuna的礼物
- HPU 图书馆占座 python
- 尚硅谷大数据技术之 DataX—1)概述
- Navicat15安装教程超详细步骤
- 有哪些好用的word文件对比工具
- Google Play关键词选词方法及常用选词工具
- Excel如何合并相同项单元格
- 抓包PC微信小程序失败解决方法