I = imread('C:\1.bmp');

figure,imshow(I)

[x,y]=size(I);                % 求出图象大小

b=double(I);

z0=max(max(max(I)));                   % 求出图象中最大的灰度

z1=min(min(min(I)));                   % 最小的灰度

T=(z0+z1)/2;                      % T赋初值,为最大值和最小值的平均值

TT=0;                             %TT赋初值

S0=0.0; n0=0.0;                       %为计算灰度大于阈值的元素的灰度总值、个数赋值

S1=0.0; n1=0.0;                       %为计算灰度小于阈值的元素的灰度总值、个数赋值

allow=50;                       % 新旧阈值的允许接近程度

d=abs(T-TT);

count=0;                         % 记录几次循环

while(d>=allow)                 % 迭代最佳阈值分割算法

count=count+1;

for i=1:x,

for j=1:y,

if I(i,j)>=T,

S0=S0+b(i,j);

n0=n0+1;

end

if I(i,j)

S1=S1+b(i,j);

n1=n1+1;

end

end

end

T0=S0/n0;

T1=S1/n1;

TT=(T0+T1)/2;            %在阈值T下,迭代阈值的计算过程

d=abs(T-TT);

T=TT;

end

S0

i1=im2bw(I,T/255);          % 图像在最佳阈值下二值化

figure,imshow(i1)

i2=bwperim(i1);         % 图像细化过程

figure,imshow(i2)

J=1-i2

% subplot(1,2,2);imshow(J);title('反相');

for m=1:50

J1=zeros(285,339);

for i=1:285

for j=1:339

k=0;

s=0;

if J(i,j)==1&J(i-1,j)*J(i+1,j)*J(i,j-1)*J(i,j+1)*J(i-1,j-1)*J(i-1,j+1)*J(i+1,j+1)*J(i+1,j-1)==0;

%统计非零相邻像素个数*************

k=J(i-1,j)+J(i+1,j)+J(i,j-1)+J(i,j+1)+J(i-1,j-1)+J(i-1,j+1)+J(i+1,j+1)+ J(i+1,j-1);

%统计相邻像素由0到1的次数****************

if J(i-1,j)==0 &J(i-1,j+1)==1

s=s+1;

end

if J(i-1,j+1)==0 &J(i,j+1)==1

s=s+1;

end

if J(i,j+1)==0 &J(i+1,j+1)==1

s=s+1;

end

if J(i+1,j+1)==0 &J(i+1,j)==1

s=s+1;

end

if J(i+1,j)==0 &J(i+1,j-1)==1

s=s+1;

end

if J(i+1,j-1)==0 &J(i,j-1)==1

s=s+1;

end

if J(i,j-1)==0 &J(i-1,j-1)==1

s=s+1;

end

if J(i-1,j-1)==0 &J(i-1,j)==1

s=s+1;

end

if (J(i,j+1)*J(i+1,j)==0|(J(i-1,j)==0&J(i,j-1)==0))&k<=6&k>=2&s==1

J1(i,j)=1;

end

end

end

end

J=J-J1;

J2=zeros(285,339);

for i=1:285

for j=1:339

k=0;

s=0;

if J(i,j)==1&J(i-1,j)*J(i+1,j)*J(i,j-1)*J(i,j+1)*J(i-1,j-1)*J(i-1,j+1)*J(i+1,j+1)*J(i+1,j-1)==0;

%统计非零相邻像素个数*************

k=J(i-1,j)+J(i+1,j)+J(i,j-1)+J(i,j+1)+J(i-1,j-1)+J(i-1,j+1)+J(i+1,j+1)+ J(i+1,j-1);

%统计相邻像素由0到1的次数****************

if J(i-1,j)==0 &J(i-1,j+1)==1

s=s+1;

end

if J(i-1,j+1)==0 &J(i,j+1)==1

s=s+1;

end

if J(i,j+1)==0 &J(i+1,j+1)==1

s=s+1;

end

if J(i+1,j+1)==0 &J(i+1,j)==1

s=s+1;

end

if J(i+1,j)==0 &J(i+1,j-1)==1

s=s+1;

end

if J(i+1,j-1)==0 &J(i,j-1)==1

s=s+1;

end

if J(i,j-1)==0 &J(i-1,j-1)==1

s=s+1;

end

if J(i-1,j-1)==0 &J(i-1,j)==1

s=s+1;

end

if (J(i-1,j)*J(i,j-1)==0|(J(i,j+1)==0&J(i+1,j)==0))&k<=6&k>=2&s==1

J2(i,j)=1;

end

end

end

end

J3=J-J2;

if J1==0&J2==0;

break

else

J=J3;

end

end

figure;imshow(J);title('细化后');

K=1-J;

figure;imshow(K);title('最终图')

matlab做图片提取骨架,图片骨架提取相关推荐

  1. GUI实战|Python做一个文档图片提取软件

    大家好,本文将进一步讲解如何用Python提取PDF与Word中图片,并结合之前讲解过的GUI框架PysimpleGUI,做一个多文件图片提取软件,效果如下: 本文主要将分为以下部分讲解: PDF.W ...

  2. matlab 求其骨架,数字图像处理图像的骨架生成和提取(Matlab)三种方法

    [实例简介] 数字图像处理图像的骨架生成和提取(Matlab),有三种方法,推荐给大家! [实例截图] [核心代码] Programe ├── Programe1 │   ├── 00.JPG │   ...

  3. python做视频抽帧图_Python提取视频中图片的示例(按帧、按秒)

    一.按帧提取 #coding=utf-8 import os import cv2 def save_img(): #提取视频中图片 按照每帧提取 video_path = r'd:\\test\\' ...

  4. 图片识别 python 神经网络,神经网络提取图片特征

    Python如何图像识别? Python图片文本识别使用的工具是PIL和pytesser. 因为他们使用到很多的python库文件,为了避免一个个工具的安装,建议使用pythonxypytesser是 ...

  5. 提取数据_Origin如何提取图片数据

    在什么样的年纪,就活出什么样的人生.因为年轻,所以我们无所畏惧,奋勇直前,敢于拼命,不去妥协.--许栋导言 有些时候,我们在看文献,想看看作者的实验数据,但是我们只有图:又或者自己的实验由于某种原因, ...

  6. python自动化提取pdf表格_[Python] 自动化办公 多种提取PDF图片的方法

    转载请注明:陈熹 chenx6542@foxmail.com (简书号:半为花间酒) 若公众号内转载请联系公众号:早起Python 这篇文章能学到的主要内容: 基于 fitz 库和正则搜索提取图片 基 ...

  7. 如何把视频分解成图片?怎么逐帧提取视频中的图片?

    在工作中遇到需要将一段视频逐帧分解成图片该怎么做?小编在这这里给大家分享一款视频提取图片(https://www.yasuoshipin.com工具,一起来了解一下吧. 在所有功能中,选择视频提取图片 ...

  8. 图片里的文字如何提取?试试这几种提取方法

      最近收到了一些小伙伴的私信,他们收到了对方发送过来的图片,觉得图片上的文字信息比较重要,但是又不知道有什么快速的方法能提取到图片中的文字.平时你们遇到这种情况会怎么做呢?今天我给大家分享几个可以将 ...

  9. python图片提取文字软件_python识别图片文字_图片文字识别软件,快速提取文字...

    图文识别是一种可以使你转换不同文档的技术,比如将扫描纸质文档,PDF文件或者数码相机拍摄的图片转换成可以编辑的文档. 假设你获得了一个纸质文件-比如,杂志.彩页或者你合作伙伴发给你的PDF合同.很明显 ...

  10. 图片坐标提取软件/图片坐标点和像素点颜色提取软件/图片坐标获取工具/Python图片坐标获取源码/图片像素坐标获取软件/python tkinter 图片显示(完全开源)

    该软件使用python写的,可以提取像素点的坐标还有也能获取像素点的16进制数据RGB565和RGB888(RGB888仅最新的源码才支持),可以单点坐标也可以按键坐标,甚至可以使用简单的左右键配合使 ...

最新文章

  1. 径向基函数神经网络_基于RBF神经网络的网络安全态势感知预测研究
  2. python for-python循环
  3. leetcode算法题--最大加号标志★
  4. CentOS 7安装教程(图文详解)如下
  5. python常用的日期时间模块
  6. JavaScript 学习笔记-- ES6学习(一)介绍以及Babel的使用
  7. Makefile中 -I -L -l区别
  8. C语言项目:扫雷大战精简版
  9. Xshell连接Ubuntu时提示SSH服务器拒绝了密码
  10. dtmf信号系统的matlab仿真,dtmf信号系统的matlab仿真毕业设计
  11. 集大成者 —— 荀子
  12. 【学习 OpenCV】—— imgproc.hpp 核心api
  13. spring 多线程 写入数据库 和 写入 xml文件
  14. 稳压二极管限流电阻怎么选择
  15. mysql 主从ppt_MYSQL主从复制和读写分离.ppt
  16. Python去除文本所有标点符号
  17. IM 即时通讯系统【源码好优多】
  18. java+ssm基于微信小程序的游泳馆管理系统 uniapp 小程序
  19. 稀疏一元多项式(C++)
  20. 小波变换(wavelet transform,WT)

热门文章

  1. win系统分区表丢失后如何恢复
  2. 当上领导以后才明白的事情
  3. 分布式任务调度:你知道和不知道的事
  4. Mysql支持translate函数吗_oracle 中的translate函数
  5. 解system.img linux,MTK6577---解压system.img
  6. 叩丁狼java培训:LinkedList的原理介绍
  7. hdu4747-线段树
  8. 对手游渠道商的一些看法
  9. [洛谷P1338] 末日的传说
  10. Dart中的构造函数