python图片处理(三)
ji那天用到了python图片处理中的二值图像的骨架提取,在matlab中通过输入图像的二值,来处理得到图像的骨架,
skelimage = bwmorph(im, 'skel', inf);
'bothat':进行“bottom hat”形态学运算,即返回源图像减去闭运算的图像;
'branchpoints':找到骨架中的分支点;
'bridge':进行像素连接操作;
'clean':去除图像中孤立的亮点,比如, 一个像素点, 像素值为1, 其周围像素的像素值全为0, 则这个孤立的亮点将被去除;
'close':进行形态学闭运算(即先膨胀后腐蚀);
'diag': 采用对角线填充, 去除八邻域的背景;
'dilate': 使用结构元素ones(3)对图像进行膨胀运算;
'endpoints':找到骨架中的结束点;
'erode':使用结构元素ones(3)对图像进行腐蚀运算;
'fill':填充孤立的黑点, 比如3*3的矩阵, 除了中间元素为0外, 其余元素全部为1, 则这个0将被填充为1;
'hbreak':断开图像中的H型连接;
'majority':如果一个像素的8邻域中有等于或超过5个像素点的像素值为1, 则将该点像素值置1;
'open':进行形态学开运算(即先腐蚀后膨胀);
'remove':如果一个像素点的4邻域都为1, 则该像素点将被置0;该选项将导致边界像素上的1被保留下来;
'skel':在这里n = Inf,骨架提取但保持图像中物体不发生断裂;不改变图像欧拉数;
'spur':去除小的分支, 或引用电学术语“毛刺”;
'thicken':在这里n = Inf, 通过在边界上添加像素达到加粗物体轮廓的目的;
'thin':在这里n = Inf,进行细化操作;
'tophat':进行“top hat”形态学运算, 返回源图像减去开运算的图像;
#-*-coding:utf-8-*-
import os
from skimage import morphology,draw
import numpy as np
import matplotlib.pyplot as plt
from skimage import io,data,color
from skimage import measure path = 'timg.jpg'
img = io.imread(path)
print(img.shape)
row,col = img.shape[:2]
mmap = np.zeros([row,col])
#因为图像是三维的所以在这块取第一维
for i in range(row):
for j in range(col):
mmap[i,j] = img[i,j,0]
mmap = (mmap < 0.5) * 1 #图像二值化
img2 = morphology.skeletonize(mmap) #图像的二值化骨架提取
fig, (ax1, ax2) = plt.subplots(nrows=1, ncols=2, figsize=(8, 4))
ax1.imshow(img, cmap=plt.cm.gray)
ax1.axis('off')
ax1.set_title('img', fontsize=20)
ax2.imshow(img2, cmap=plt.cm.gray)
ax2.axis('off')
ax2.set_title('img2', fontsize=20)
fig.tight_layout()
plt.show()
图片结果:

在matlab中有求骨架顶点的
outEndPoints = BOHitOrMiss(skelimage, 'end') 在python中没有找到相应的求骨架顶点的函数。
BOHitOrMiss这个函数是编写的,并不是库函数。
BOHitOrMiss.m
function out = BOHitOrMiss ( im, method )
%% BOHitOrMiss - end and triple points detection
%
% REFERENCE:
% Cecilia Di Ruberto,
% Recognition of shapes by attributed skeletal graphs,
% Pattern Recognition , -,
%
% HELP:
% Matlab's interpretation of the algorithm
% -> ; -> -; * -> ;
%
% INPUT:
% im - binary image.
% method - 'end' or 'triple'.
%
% OUTPUT:
% out - image with detected points
%
% USAGE:
% % Skeleton
% sk = bwmorph(im, 'thin', inf);
% % Hit or Miss
% out1 = BOHitOrMiss(sk, 'end');
% out2 = BOHitOrMiss(sk, 'triple');
%
% AUTHOR:
% Boguslaw Obara, http://boguslawobara.net/
%
% VERSION:
% 0.1 - // First implementation %% SE - endpoints
if strcmp(method, 'end')
se(:,:,) = [ - - ;...
- - ;...
- - - ]; se(:,:,) = [ - - ;...
- - ;...
- - - ]; se(:,:,) = [ - - - ;...
- ;...
- - - ]; se(:,:,) = [ - - - ;...
- - ;...
- - ]; se(:,:,) = [ - - - ;...
- - ;...
- - ]; se(:,:,) = [ - - - ;...
- - ;...
- - ]; se(:,:,) = [ - - - ;...
- ;...
- - - ]; se(:,:,) = [ - - ;...
- - ;...
- - - ];
%% SE - triple points (junctions)
elseif strcmp(method, 'triple')
se(:,:,) = [ - - ;...
;...
- - - ]; se(:,:,) = [ - ;...
- - ;...
- - ]; se(:,:,) = [ - - ;...
- ;...
- - ]; se(:,:,) = [ - - ;...
- - ;...
- ]; se(:,:,) = [ - - - ;...
;...
- - ]; se(:,:,) = [ - - ;...
- - ;...
- ]; se(:,:,) = [ - - ;...
- ;...
- - ]; se(:,:,) = [ - ;...
- - ;...
- - ]; se(:,:,) = [ - - ;...
- ;...
- - ]; se(:,:,)= [ - - ;...
- ;...
- - ]; se(:,:,)= [ - - ;...
- ;...
- - ]; se(:,:,)= [ - - ;...
- - ;...
- ]; se(:,:,)= [ - - ;...
- ;...
- - ]; se(:,:,)= [ - - ;...
- ;...
- - ]; se(:,:,)= [ - - ;...
- ;...
- - ]; se(:,:,)= [ - ;...
- - ;...
- - ];
end
%% Hit or Miss
out = zeros(size(im));
if strcmp(method, 'end') || strcmp(method, 'triple')
for i=:size(se,)
hom = bwhitmiss(im, se(:,:,i));
out = max(out, hom);
end
end
%%
end
python图片处理(三)的更多相关文章
- Python 图片转字符画
Python 图片转字符画 一.课程介绍 1. 课程来源 原创 2. 内容简介 本课程讲述怎样使用 Python 将图片转为字符画 3. 前置课程 Python编程语言 Linux 基础入门(新版) ...
- media静态文件统一管理 操作内存的流 - StringIO | BytesIO PIL:python图片操作库 前端解析二进制流图片(了解) Admin自动化数据管理界面
一.media ''' 1. 将用户上传的所有静态文件统一管理 -- settings.py -- MEDIA_ROOT = os.path.join(BASE_DIR, 'media') 2. 服务 ...
- 转 Python爬虫入门三之Urllib库的基本使用
静觅 » Python爬虫入门三之Urllib库的基本使用 1.分分钟扒一个网页下来 怎样扒网页呢?其实就是根据URL来获取它的网页信息,虽然我们在浏览器中看到的是一幅幅优美的画面,但是其实是由浏览器 ...
- 将python图片转为二进制文本的实例
https://www.jb51.net/article/155342.htm 写在最前面: 我在研究机器学习的过程中,给的数据集是手写数字图片被处理后的由0,1表达的txt文件,今天写一写关于图片转 ...
- python skimage图像处理(三)
python skimage图像处理(三) This blog is from: https://www.jianshu.com/p/7693222523c0 霍夫线变换 在图片处理中,霍夫变换主要 ...
- 进击的Python【第三章】:Python基础(三)
Python基础(三) 本章内容 集合的概念与操作 文件的操作 函数的特点与用法 参数与局部变量 return返回值的概念 递归的基本含义 函数式编程介绍 高阶函数的概念 一.集合的概念与操作 集合( ...
- Python 基础语法(三)
Python 基础语法(三) --------------------------------------------接 Python 基础语法(二)------------------------- ...
- 笨办法学 Python (第三版)(转载)
笨办法学 Python (第三版) 原文地址:http://blog.sina.com.cn/s/blog_72b8298001019xg8.html 摘自https://learn-python ...
- 教程,Python图片转字符堆叠图
Python 图片转字符画 一.实验说明 1. 环境登录 无需密码自动登录, 2. 环境介绍 本实验环境采用带桌面的UbuntuLinux环境,实验中会用到桌面上的程序: LX终端(LXTermina ...
随机推荐
- java CPU 100% 排查(转载)
一个应用占用CPU很高,除了确实是计算密集型应用之外,通常原因都是出现了死循环. (友情提示:本博文章欢迎转载,但请注明出处:hankchen,http://www.blogjava.net/hank ...
- MySQL数据库语法-多表查询练习一
MySQL数据库语法-多表查询练习一 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 本篇博客主要介绍的多表查询的外键约束,以及如何使用外链接和内连接查询数据信息. 一.数据表和测试 ...
- 转:UINavigationBar返回上一级出现nested pop animation can result in corrupted navigation bar
[self.navigationController popViewControllerAnimated:NO]; 出现上面的错误是因为pop的时候要确保先让本页面加载完成,即如果在viewDidLo ...
- 科学计算三维可视化---Traits属性的功能
Traits属性的功能 Traits库为python的属性增加了类型定义的功能,除此之外他还提供了5个特殊的功能(可以为用户的界面响应提供基本能力):初始化:每个traits属性都有自己的默认值验证: ...
- vue-router 实践
1. vue-router2学习实践笔记 2. router.push() 3. 使用vue-router跳转页面
- Nginx跳转Tomcat
conf配置: server { listen 80; server_name www.-------.com; server_name_i ...
- Overfitting & Regularization
Overfitting & Regularization The Problem of overfitting A common issue in machine learning or ma ...
- SVN搭建和使用
原文出处: http://www.cnblogs.com/tugenhua0707/p/3969558.html SVN简介: 为什么要使用SVN? 程序员在编写程序的过程中,每个程序员都会生成很多不 ...
- JavaScript 运行机制之执行顺序详解
JavaScript是一种描述型脚本语言,它不同于 Java 或 C# 等编译性语言,它不需要进行编译成中间语言,而是由浏览器进行动态地解析与执行.如果你不能理解 JavaScript 语言的运行机制 ...
- jquery bxslider幻灯片样式改造
找了很多jquery的幻灯片,都觉得不是很好,最后发现bxslider兼容性最好,移动设备支持手动翻动. 但是官方提供的显示效果真的很难看,让人难以接受.最后只能自己DIY了. bxslider官方样 ...