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 ...
随机推荐
- 【bzoj2795】【Poi2012】A Horrible Poem
题解: 询问区间的整循环节 设区间长度为$n$ 如果有循环节长为$x$和$y$,那由斐蜀定理得$gcd(x,y)$也一定为一个循环节: 假设最小的循环节长为$mn$,那么对于任何循环节长$x$,一定$ ...
- Windows环境下,将Django部署到Apache Web Server
在Windows上部署Django(用mod_wsgi)会出现各种奇怪的问题,现简单记录下配置过程及遇到的错误及解决方法. 环境搭建 ...
- 深度学习网络层之 Pooling
pooling 是仿照人的视觉系统进行降维(降采样),用更高层的抽象表示图像特征,这一部分内容从Hubel&wiesel视觉神经研究到Fukushima提出,再到LeCun的LeNet5首次采 ...
- Zabbix应用四:Zabbix监控Nginx
利用Zabbix监控Nginx 一.准备nginx监控模版: 1.1.下载nginx监控模版: 点此下载 1.2.导入模版: Zabbix管理页面,选择'配置'->'模版'->'导入': ...
- Cloudstack 虚拟机实例(四)
虚拟机实例 默认的模板并没有被下载 修改全局设置 secstorage.allowed.internal.sites 设置 ,二级存储ISO镜像和模板可以下载,IP网段 重启服务/etc/init. ...
- Hadoop基础-HDFS的读取与写入过程
Hadoop基础-HDFS的读取与写入过程 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 为了了解客户端及与之交互的HDFS,NameNode和DataNode之间的数据流是什么样 ...
- VS批处理命令使用
在项目开始生成或者生成完成后想做一些操作,比如去编译非解决方案下的的项目,完成编译后复制文件到某个文件夹之类的纠结需求. 1. 基本使用 预先生成事件命令行,可以在项目编译的过程中运行 后期生成事件命 ...
- Hi3518 网络监控SOC芯片规格参数
Hi3518 网络监控SOC芯片 视频编解码 处理器内核 ● ARM926@ 440MHz,16KB I-Cache ,16KB D-Cache 视频编码 ● H.264 Main Pro ...
- jquery radio的操作
radio 按钮组, name=”sex”. <input type="radio" name="sex" value="Male"& ...
- 关于node的setTimeout的延时最大限制
node的setTimeout有最大值限制,最大值为2^31-1.一旦超过了最大值,其效果就跟延时值为0的情况一样,也就是马上执行.chrome测试并未发现该问题,解决方案如下,重写setTimeou ...