最简单的方法

最简单的方法是用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相关推荐

  1. 文字细化算法matlab,[转载](转)二值图像的细化算法和源程序代码(Matlab)

    二值图像的细化算法和源程序代码(Matlab) 有关图像细化算法,从方法上有很多,具体请参看各图像处理的经典教材,但有一本书,我记得是大概1980年代科学出版社出版的,是著名的Pavlidis编著,并 ...

  2. Rosenfeld细化算法 matlab(速度超慢)

    其中Rosenfeld细化算法为并行算法,可以将图像进行分割计算 clear clc close all tic; img = rgb2gray(imread('3.png')); bw = imbi ...

  3. 文字细化算法matlab,细化算法matlab

    最简单的方法 最简单的方法是用matlab自带的函数: BW2 = bwmorph(BW,'thin',n); n是要细化迭代的次数,也可以是Inf(没有引号).Inf表示算法会一直迭代直到图像不再改 ...

  4. 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 ...

  5. 图片缩放 算法 matlab,图像放大算法总结及MATLAB源程序.doc

    图像放大算法总结及MATLAB源程序 1,插值算法(3种): (1)最邻近插值(近邻取样法): 最近插值的的思想很简单就是把这个非整数坐标作一个四舍五入,取最近的整数点坐标处的点的颜色.可见,最邻近插 ...

  6. TDOA定位的Chan算法MATLAB源代码

    TDOA定位的Chan算法MATLAB源代码 . function [POS_ref,POS1,POS2,POS3,POS4] = TDOA_chan(R,Pbs,Q) %************** ...

  7. dijkstra算法matlab代码_头脑风暴优化(BSO)算法(附MATLAB代码)

    BSO讲解https://www.zhihu.com/video/1252605855767736320 B站搜索:随心390,同步观看视频 各位小伙伴可在闲鱼搜索 优化算法交流地,即可搜索到官方闲鱼 ...

  8. Algorithm之PrA:PrA之nLP非线性规划算法+Matlab 优化工具箱的GUI求解非线性规划

    Algorithm之PrA:PrA之nLP非线性规划算法+Matlab 优化工具箱的GUI求解非线性规划 目录 PrA之nLP非线性规划算法 操作图文教程 PrA之nLP非线性规划算法 (1).编写M ...

  9. matlab虚拟力,31无线传感网络布局优化的虚拟力导向粒子群算法MATLAB源代码

    无线传感网络布局优化的虚拟力导向粒子群算法MATLAB源代码 本源代码主要参考了下面的文献:王雪, 王晟, 马俊杰. 无线传感器网络布局的虚拟力导向微粒群优化策略[J]. 电子学报, 2007, 11 ...

  10. 亮度均匀性 matlab,求:亮度保持的夜景图像直方图均衡算法 matlab程序

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 求:亮度保持的夜景图像直方图均衡算法 matlab程序 我是大四学生,最近在做一个论文,头疼死了,不知道这个论文的程序怎么写.这里是matlab论坛 我想 ...

最新文章

  1. c++文件操作一一读取文件内容
  2. Execute permission missing on User-Defined table Type
  3. new uk psw policy
  4. Mysql和mono,.net – Mac OS X Mono和MySql连接器问题
  5. 二叉排序树查找的c语言程序,C语言二叉排序(搜索)树实例
  6. Python is同一性运算符和==相等运算符区别
  7. PHP中获取星期的几种方法
  8. 用python把excel中的数据变成字典(复制代码即可用)
  9. 主从复制2——拥有海量数据主服务器的主从复制模型详细实现;
  10. 【Spark】sparksql中使用自定义函数
  11. JNI读取assets资源文件
  12. python开发wince_零基础学习WinCE开发
  13. 【莫队算法】【权值分块】bzoj3920 Yuuna的礼物
  14. HPU 图书馆占座 python
  15. 尚硅谷大数据技术之 DataX—1)概述
  16. Navicat15安装教程超详细步骤
  17. 有哪些好用的word文件对比工具
  18. Google Play关键词选词方法及常用选词工具
  19. Excel如何合并相同项单元格
  20. 抓包PC微信小程序失败解决方法

热门文章

  1. 加扣扣群所有脚本免费使用
  2. 基本数学概念——数列
  3. How to craw the Info of BiliBIli with python
  4. XP桌面图标阴影的去除
  5. 计算机软件实习每日学习打卡(1)20201130
  6. Java大学生特训营 疫情地图项目实战课
  7. 搜狗二季度财报解读:有扎实的现在,也有性感的未来
  8. LeetCode剑指offer题目分类汇总及题解
  9. 《X战警:逆转未来》热映 破福斯海外开画纪录
  10. 【CVPR 2018】Image Generation from Scene Graphs从场景图中生成图像 [文本转图]