01 2016 档案

摘要:骨架提取与分水岭算法也属于形态学处理范畴,都放在morphology子模块内。 1、骨架提取 骨架提取,也叫二值图像细化。这种算法能将一个连通区域细化成一个像素的宽度,用于特征提取和目标拓扑表示。 morphology子模块提供了两个函数用于骨架提取,分别是Skeletonize()函数和media 阅读全文
posted @ 2016-01-28 20:29 denny402 阅读(59047) 评论(0) 推荐(4) 编辑
摘要:形态学处理,除了最基本的膨胀、腐蚀、开/闭运算、黑/白帽处理外,还有一些更高级的运用,如凸包,连通区域标记,删除小块区域等。 1、凸包 凸包是指一个凸多边形,这个凸多边形将图片中所有的白色像素点都包含在内。 函数为: skimage.morphology.convex_hull_image(imag 阅读全文
posted @ 2016-01-28 14:53 denny402 阅读(81326) 评论(7) 推荐(7) 编辑
摘要:在前面的python数字图像处理(10):图像简单滤波 中,我们已经讲解了很多算子用来检测边缘,其中用得最多的canny算子边缘检测。 本篇我们讲解一些其它方法来检测轮廓。 1、查找轮廓(find_contours) measure模块中的find_contours()函数,可用来检测二值图像的边缘 阅读全文
posted @ 2016-01-26 16:59 denny402 阅读(41028) 评论(2) 推荐(4) 编辑
摘要:在极坐标中,圆的表示方式为:x=x0+rcosθy=y0+rsinθ圆心为(x0,y0),r为半径,θ为旋转度数,值范围为0-359如果给定圆心点和半径,则其它点是否在圆上,我们就能检测出来了。在图像中,我们将每个非0像素点作为圆心点,以一定的半径进行检测,如果有一个点在圆上,我们就对这个圆心累加一... 阅读全文
posted @ 2016-01-26 13:36 denny402 阅读(14194) 评论(1) 推荐(0) 编辑
摘要:在图片处理中,霍夫变换主要是用来检测图片中的几何形状,包括直线、圆、椭圆等。在skimage中,霍夫变换是放在tranform模块内,本篇主要讲解霍夫线变换。对于平面中的一条直线,在笛卡尔坐标系中,可用y=mx+b来表示,其中m为斜率,b为截距。但是如果直线是一条垂直线,则m为无穷大,所有通常我们在... 阅读全文
posted @ 2016-01-25 20:59 denny402 阅读(15507) 评论(2) 推荐(1) 编辑
摘要:caffe团队用imagenet图片进行训练,迭代30多万次,训练出来一个model。这个model将图片分为1000类,应该是目前为止最好的图片分类model了。 假设我现在有一些自己的图片想进行分类,但样本量太小,可能只有几百张,而一般深度学习都要求样本量在1万以上,因此训练出来的model精度 阅读全文
posted @ 2016-01-17 17:57 denny402 阅读(52012) 评论(67) 推荐(6) 编辑
摘要:上接:Caffe学习系列(21):caffe图形化操作工具digits的安装与运行经过前面的操作,我们就把数据准备好了。一、训练一个model右击右边Models模块的” Images" 按钮 ,选择“classification"在打开页面右下角可以看到,系统提供了一个caffe model,分别... 阅读全文
posted @ 2016-01-16 20:09 denny402 阅读(17204) 评论(12) 推荐(3) 编辑
摘要:经过前面一系列的学习,我们基本上学会了如何在linux下运行caffe程序,也学会了如何用python接口进行数据及参数的可视化。如果还没有学会的,请自行细细阅读: caffe学习系列:http://www.cnblogs.com/denny402/tag/caffe/也许有人会觉得比较复杂。确实,... 阅读全文
posted @ 2016-01-16 19:22 denny402 阅读(26578) 评论(15) 推荐(1) 编辑
摘要:本文提供更多更强大的滤波方法,这些方法放在filters.rank子模块内。这些方法需要用户自己设定滤波器的形状和大小,因此需要导入morphology模块来设定。1、autolevel这个词在photoshop里面翻译成自动色阶,用局部直方图来对图片进行滤波分级。该滤波器局部地拉伸灰度像素值的直方... 阅读全文
posted @ 2016-01-15 13:39 denny402 阅读(15823) 评论(0) 推荐(1) 编辑
摘要:对图像进行形态学变换。变换对象一般为灰度图或二值图,功能函数放在morphology子模块内。1、膨胀(dilation)原理:一般对二值图像进行操作。找到像素值为1的点,将它的邻近像素点都设置成这个值。1值表示白,0值表示黑,因此膨胀操作可以扩大白色值范围,压缩黑色值范围。一般用来扩充边缘或填充小... 阅读全文
posted @ 2016-01-15 11:01 denny402 阅读(22349) 评论(0) 推荐(3) 编辑
摘要:图形包括线条、圆形、椭圆形、多边形等。在skimage包中,绘制图形用的是draw模块,不要和绘制图像搞混了。1、画线条函数调用格式为:skimage.draw.line(r1,c1,r2,c2)r1,r2: 开始点的行数和结束点的行数c1,c2: 开始点的列数和结束点的列数返回当前绘制图形上所有点... 阅读全文
posted @ 2016-01-14 19:04 denny402 阅读(18686) 评论(0) 推荐(0) 编辑
摘要:图像阈值分割是一种广泛应用的分割技术,利用图像中要提取的目标区域与其背景在灰度特性上的差异,把图像看作具有不同灰度级的两类区域(目标区域和背景区域)的组合,选取一个比较合理的阈值,以确定图像中每个像素点应该属于目标区域还是背景区域,从而产生相应的二值图像。在skimage库中,阈值分割的功能是放在f... 阅读全文
posted @ 2016-01-14 17:50 denny402 阅读(37119) 评论(1) 推荐(7) 编辑
摘要:对图像进行滤波,可以有两种效果:一种是平滑滤波,用来抑制噪声;另一种是微分算子,可以用来检测边缘和特征提取。skimage库中通过filters模块进行滤波操作。1、sobel算子sobel算子可用来检测边缘函数格式为:skimage.filters.sobel(image,mask=None)fr... 阅读全文
posted @ 2016-01-12 18:28 denny402 阅读(28509) 评论(1) 推荐(4) 编辑
摘要:在图像处理中,直方图是非常重要,也是非常有用的一个处理要素。在skimage库中对直方图的处理,是放在exposure这个模块中。1、计算直方图函数:skimage.exposure.histogram(image,nbins=256)在numpy包中,也提供了一个计算直方图的函数histogram... 阅读全文
posted @ 2016-01-12 16:42 denny402 阅读(55028) 评论(2) 推荐(1) 编辑
摘要:图像亮度与对比度的调整,是放在skimage包的exposure模块里面1、gamma调整原理:I=Ig对原图像的像素,进行幂运算,得到新的像素值。公式中的g就是gamma值。如果gamma>1, 新图像比原图像暗如果gamma<1,新图像比原图像亮函数格式为:skimage.exposure.ad... 阅读全文
posted @ 2016-01-12 15:12 denny402 阅读(46722) 评论(1) 推荐(5) 编辑
摘要:图像的形变与缩放,使用的是skimage的transform模块,函数比较多,功能齐全。1、改变图片尺寸resize函数格式为:skimage.transform.resize(image,output_shape)image: 需要改变尺寸的图片output_shape: 新的图片尺寸from s... 阅读全文
posted @ 2016-01-12 13:55 denny402 阅读(55928) 评论(2) 推荐(0) 编辑
摘要:有些时候,我们不仅要对一张图片进行处理,可能还会对一批图片处理。这时候,我们可以通过循环来执行处理,也可以调用程序自带的图片集合来处理。图片集合函数为:skimage.io.ImageCollection(load_pattern,load_func=None)这个函数是放在io模块内的,带两个参数... 阅读全文
posted @ 2016-01-12 11:23 denny402 阅读(44759) 评论(10) 推荐(2) 编辑
摘要:实际上前面我们就已经用到了图像的绘制,如: io.imshow(img) 这一行代码的实质是利用matplotlib包对图片进行绘制,绘制成功后,返回一个matplotlib类型的数据。因此,我们也可以这样写: import matplotlib.pyplot as plt plt.imshow(i 阅读全文
posted @ 2016-01-11 21:21 denny402 阅读(145617) 评论(1) 推荐(17) 编辑
摘要:一、图像数据类型及转换在skimage中,一张图片就是一个简单的numpy数组,数组的数据类型有很多种,相互之间也可以转换。这些数据类型及取值范围如下表所示:Data typeRangeuint80 to 255uint160 to 65535uint320 to 232float-1 to 1 o... 阅读全文
posted @ 2016-01-11 19:29 denny402 阅读(62351) 评论(2) 推荐(5) 编辑
摘要:图片读入程序中后,是以numpy数组存在的。因此对numpy数组的一切功能,对图片也适用。对数组元素的访问,实际上就是对图片像素点的访问。彩色图片访问方式为:img[i,j,c]i表示图片的行数,j表示图片的列数,c表示图片的通道数(RGB三通道分别对应0,1,2)。坐标是从左上角开始。灰度图片访问... 阅读全文
posted @ 2016-01-11 18:11 denny402 阅读(37070) 评论(1) 推荐(1) 编辑
摘要:skimage提供了io模块,顾名思义,这个模块是用来图片输入输出操作的。为了方便练习,也提供一个data模块,里面嵌套了一些示例图片,我们可以直接使用。引入skimage模块可用:from skimage import io一、从外部读取图片并显示读取单张彩色rgb图片,使用skimage.io.... 阅读全文
posted @ 2016-01-11 17:14 denny402 阅读(168239) 评论(4) 推荐(6) 编辑
摘要:一提到数字图像处理编程,可能大多数人就会想到matlab,但matlab也有自身的缺点: 1、不开源,价格贵 2、软件容量大。一般3G以上,高版本甚至达5G以上。 3、只能做研究,不易转化成软件。 因此,我们这里使用python这个脚本语言来进行数字图像处理。 要使用python,必须先安装pyth 阅读全文
posted @ 2016-01-11 15:49 denny402 阅读(47893) 评论(3) 推荐(8) 编辑
摘要:caffe程序自带有一张小猫图片,存放路径为caffe根目录下的 examples/images/cat.jpg, 如果我们想用一个训练好的caffemodel来对这张图片进行分类,那该怎么办呢? 如果不用这张小猫图片,换一张别的图片,又该怎么办呢?如果学会了小猫图片的分类,那么换成其它图片,程序实... 阅读全文
posted @ 2016-01-07 19:49 denny402 阅读(84826) 评论(56) 推荐(4) 编辑
摘要:如同前几篇的可视化,这里采用的也是jupyter notebook来进行曲线绘制。In[1]:#加载必要的库import numpy as npimport matplotlib.pyplot as plt%matplotlib inlineimport sys,os,caffe#设置当前目录caf... 阅读全文
posted @ 2016-01-07 16:06 denny402 阅读(21080) 评论(20) 推荐(1) 编辑
摘要:python/draw_net.py, 这个文件,就是用来绘制网络模型的。也就是将网络模型由prototxt变成一张图片。在绘制之前,需要先安装两个库1、安装GraphViz# sudo apt-get install GraphViz注意,这里用的是apt-get来安装,而不是pip.2 、安装p... 阅读全文
posted @ 2016-01-06 20:06 denny402 阅读(22936) 评论(17) 推荐(0) 编辑
摘要:cifar10的各层数据和参数可视化先用caffe对cifar10进行训练,将训练的结果模型进行保存,得到一个caffemodel,然后从测试图片中选出一张进行测试,并进行可视化。In[1]:#加载必要的库import numpy as npimport matplotlib.pyplot as p... 阅读全文
posted @ 2016-01-06 15:52 denny402 阅读(23492) 评论(29) 推荐(3) 编辑
摘要:通过前面的学习,我们已经能够正常训练各种数据了。设置好solver.prototxt后,我们可以把训练好的模型保存起来,如lenet_iter_10000.caffemodel。 训练多少次就自动保存一下,这个是通过snapshot进行设置的,保存文件的路径及文件名前缀是由snapshot_... 阅读全文
posted @ 2016-01-05 18:28 denny402 阅读(33123) 评论(33) 推荐(2) 编辑
摘要:图片减去均值后,再进行训练和测试,会提高速度和精度。因此,一般在各种模型中都会有这个操作。那么这个均值怎么来的呢,实际上就是计算所有训练样本的平均值,计算出来后,保存为一个均值文件,在以后的测试中,就可以直接使用这个均值来相减,而不需要对测试图片重新计算。一、二进制格式的均值计算caffe中使用的均... 阅读全文
posted @ 2016-01-05 14:56 denny402 阅读(40778) 评论(22) 推荐(0) 编辑
摘要:系统:win7(64bit)如果只需要安装python,执行步骤一就可以了,不用管后面。如果还需要其它的库,则只需要执行第二步,第一步可省略(因为在安装anaconda的时间,python就自动装好了)。一、先安装python先到https://www.python.org/downloads/下载... 阅读全文
posted @ 2016-01-03 23:03 denny402 阅读(19621) 评论(2) 推荐(2) 编辑
摘要:我们先来看两个函数reshape和flatten:假设我们先生成一个一维数组:vec=np.arange(15)print vec显示为:[ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14]如果我们要把这个一维数组,变成一个3*5二维矩阵,我们可以使用resh... 阅读全文
posted @ 2016-01-03 17:30 denny402 阅读(62217) 评论(4) 推荐(2) 编辑
摘要:前面的一些例子中,我们都是利用Image.open()来打开一幅图像,然后直接对这个PIL对象进行操作。如果只是简单的操作还可以,但是如果操作稍微复杂一些,就比较吃力了。因此,通常我们加载完图片后,都是把图片转换成矩阵来进行更加复杂的操作。python中利用numpy库和scipy库来进行各种数据操... 阅读全文
posted @ 2016-01-03 15:26 denny402 阅读(78199) 评论(0) 推荐(5) 编辑
摘要:一、图像通道1、彩色图像转灰度图from PIL import Imageimport matplotlib.pyplot as pltimg=Image.open('d:/ex.jpg')gray=img.convert('L')plt.figure("beauty")plt.imshow(gra... 阅读全文
posted @ 2016-01-03 14:24 denny402 阅读(42773) 评论(6) 推荐(1) 编辑
摘要:一提到数字图像处理,可能大多数人就会想到matlab,但matlab也有自身的缺点:1、不开源,价格贵2、软件容量大。一般3G以上,高版本甚至达5G以上。3、只能做研究,不易转化成软件。因此,我们这里使用python这个脚本语言来进行数字图像处理。要使用python,必须先安装python,一般是2... 阅读全文
posted @ 2016-01-03 12:09 denny402 阅读(300642) 评论(1) 推荐(14) 编辑