2018-11-14 18:23:42 qq_43678660 阅读数 459
  • 【Python全栈】第六周 Django框架

    本周课程主要讲解Python的Web框架Django,具体有Django框架的安装、快速入门、URL路由配置、Model模型、View视图、Template模板、以及常用的web工具和其他核心功能。通过本周学习让学员可以掌握:Django框架的快速搭建、使用网站Admin后台管理、数据库表信息的增、删、改、查、验证码的使用、文件上传,图片处理、数据分页和富文本编辑器的使用等等技能。

    726 人正在学习 去看看 CSDN就业班

分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow

也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

                原文地址:http://blog.sina.com.cn/s/blog_53c74fa1010002pn.html

做数字图像处理的,怎能没有一个图库?虽说自己可以建立,可是如果是比较知名的图库,做出来的实验结果才能比较让人信服。coral是很有名,可他要收费。我寻寻觅觅,还是找到了一些图库,有的是纯texture图库,比如著名的vistex,有的是faceimages,有的也有RGB真彩色图的。下面罗列了一些url,可以找到对应的。
 
1、http://vismod.media.mit.edu/
这是美国麻省media实验室的一个网页,该实验室在数字图像处理方面还是很有成就的。在download里面会有很多有用的东西。比如vistex or faceimages and others
 
2、http://www.dice.ucl.ac.be/mlg/index.php?page=DataBases
这是ucl的machine learning group的database
 
3、http://sipi.usc.edu/services/database/index.html
这是著名的美国南加州大学的USI-SIPI image database,有纹理图和真彩图
 
4、http://www.cs.washington.edu/research/imagedatabase/
这是华盛顿大学的Ground truth Database。这个图库我用的最多,因为目前做真彩色图作的比较多,而作单纯的纹理不是很多。该database里的图片都是RGB,jpeg格式的,对于matlab来说是很方便处理的。
 
所有图库我都下载过,链接均有效。当然我也不知道何时会失效,一般来说保留的时间应该比较长吧,因为都是大学在做的研究,前人学完了后人还需要。所以,基本上从我开始作发现这些图库开始,到现在已经半年了。依然保留着呢。

有需要的或者近期有需要的还是尽快下载吧。


http://decsai.ugr.es/cvg/dbimagenes/

Olivetti Research Laboratory in Cambridge人脸库


http://www.opencv.org.cn/opencvdoc/2.3.2/html/index.html


           

给我老师的人工智能教程打call!http://blog.csdn.net/jiangjunshow

这里写图片描述
2019-02-13 17:25:05 weixin_42514606 阅读数 734
  • 【Python全栈】第六周 Django框架

    本周课程主要讲解Python的Web框架Django,具体有Django框架的安装、快速入门、URL路由配置、Model模型、View视图、Template模板、以及常用的web工具和其他核心功能。通过本周学习让学员可以掌握:Django框架的快速搭建、使用网站Admin后台管理、数据库表信息的增、删、改、查、验证码的使用、文件上传,图片处理、数据分页和富文本编辑器的使用等等技能。

    726 人正在学习 去看看 CSDN就业班


在Pyhton图像库「Python Imaging Library」支持大量的图片格式,是图像处理和批处理的最佳选择,可以用这个来创建缩略图、文件格式之间的转换、打印图片、大小转换、颜色转换、还有对图片加滤镜「模糊、磨皮」等操作。功能非常简单,但是API调用非常简单


安装

安装的仍然使用pip安装,非常简单快捷。对于国内用户来说,不能访问python官网的时候,可以替换python源为阿里源或者其他国内源;其二对于其他的内网用户来说,可以在安装的时候加上代理地址。

$ pip install Pillow # python2
$ pip3 install Pillow # python3 如果没有添加pip3软连接,用python3的pip一样的

$ pip install Pillow --proxy=10.10.10.10:80 # 代理

验证是否安装成功,没有报错就是安装成功了。

>>> import PIL
>>> dir(PIL)
['PILLOW_VERSION', 'VERSION', '__builtins__', '__cached__', '__doc__.......

访问文件

用「open」方法打开指定文件即可,可以看到文件的一些详细参数,比如大小、高度、长度、格式、模式等。

from PIL import Image
try:
    im= Image.open("1.png")
    print(im.format, im.size, im.mode)
except Exception as e:
        print(e)
# output: PNG (736, 458) RGB

加载图像

获取到Image实例之后,可以用这个类的方法来处理和操作图像。这个是把图片保存位临时文件,然后用系统默认的图片查看工具来显示图片的,方便调试和测试。也可以用save()方法来保存文件。

>>> im.show()
>>> im.save("test.png") #

读写图像

对图像的几何变换、颜色变换、图像增强、以及剪切等操作。

图像过滤器

图像增强处理里面有个,包含了一个过滤器ImageFilter模块,可以模糊图片等操作,下面是一个模糊操作的Demo。

# Import the modules
from PIL import Image, ImageFilter

try:
    # Load an image from the hard drive
    original = Image.open("1.png")

    # Blur the image
    blurred = original.filter(ImageFilter.BLUR)

    # Display both images
    original.show()
    blurred.show()

    # save the new image
    blurred.save("blurred.png")

except:
    print "Unable to load image"

效果如下:在这里插入图片描述
除了BLUR,还有其他的参数。

BLUR
CONTOUR
DETAIL
EDGE_ENHANCE
EDGE_ENHANCE_MORE
EMBOSS
FIND_EDGES
SMOOTH
SMOOTH_MORE
SHARPEN

创建缩略图

也是同样使用实例的thumbnail方法即可,非常简单。

from PIL import Image
size = (128, 128)
thumbnail= "thumbnail.jpeg"
try:
    im =  Image.open("1.png")
except Exception as e:
    print(e)
im.thumbnail(size)
im.save(thumbnail)

缩略图

剪切、粘贴

剪切使用crop方法即可,指定 2 个坐标,需要说明的是左上角是(0 ,0);

box = (10, 10, 200, 200) # 对应: 左 上 右 下
region = im.crop(box) # 剪切

region = region.transpose(Image.ROTATE_180)
im.paste(region, box) # 粘贴

小结

python 图像处理「PIL」对图像处理非常容易,加上完善的API文档手册,对于新手也是非常友好的。

更多阅读

  1. Pillow 官方文档
2016-04-24 19:13:29 GarfieldEr007 阅读数 4664
  • 【Python全栈】第六周 Django框架

    本周课程主要讲解Python的Web框架Django,具体有Django框架的安装、快速入门、URL路由配置、Model模型、View视图、Template模板、以及常用的web工具和其他核心功能。通过本周学习让学员可以掌握:Django框架的快速搭建、使用网站Admin后台管理、数据库表信息的增、删、改、查、验证码的使用、文件上传,图片处理、数据分页和富文本编辑器的使用等等技能。

    726 人正在学习 去看看 CSDN就业班

airplane



baboon







book





cat





fruits




hand_sample1





hand_sample2





hand_sample3





lena





one_way_train_0000




one_way_train_0001




scene











stuff




Template_Matching_Original_Image




Template_Matching_Template_Image








2016-10-31 04:13:12 attilax 阅读数 1127
  • 【Python全栈】第六周 Django框架

    本周课程主要讲解Python的Web框架Django,具体有Django框架的安装、快速入门、URL路由配置、Model模型、View视图、Template模板、以及常用的web工具和其他核心功能。通过本周学习让学员可以掌握:Django框架的快速搭建、使用网站Admin后台管理、数据库表信息的增、删、改、查、验证码的使用、文件上传,图片处理、数据分页和富文本编辑器的使用等等技能。

    726 人正在学习 去看看 CSDN就业班

Atitit 图像处理 常用8大滤镜效果 Jhlabs 图像处理类库 java常用图像处理类库


1.1. 5种常用的Photoshop滤镜,分别针对照片的曝光、风格色调、黑白照片处理、锐利度、降噪这五大方向。坦 1
1.2. Java Image Filters 是由 Jhlabs 开发的一组用来处理 Java 图像的类库,提供各种常用的图像处理效果,例如反转色、扭曲、水波纹、凹凸、黑白效果等等数十种效果, 1
1.3. Photoshop CS6常用8大滤镜中文集合版 3
1.4. 史上超强图像处理开源工具包--ImageMagick  4
1.5. Thumbnailator是一个用来生成图像缩略图的Java类库 4
1.6. Java Image Filters它几乎提供了PS上大部分的图像特效 4
1.7. Apache Commons Imaging 前身是 Apache Commons Sanselan ,这是一个用来读写各种图像格式的 Java 类库 4




1.1.5种常用的Photoshop滤镜,分别针对照片的曝光、风格色调、黑白照片处理、锐利度、降噪这五大方向。坦
1.2.Java Image Filters 是由 Jhlabs 开发的一组用来处理 Java 图像的类库,提供各种常用的图像处理效果,例如反转色、扭曲、水波纹、凹凸、黑白效果等等数十种效果,
如下图所示,更多的效果请看其网站首页:
 ChannelMixFilter - Mixes the RGB channels
 ContrastFilter - Adjusts brightness and contrast
 CurvesFilter - Apply adjustment curves to an image
 DiffusionFilter - Error-diffusion dithering
 DitherFilter - Ordered dithering
 ExposureFilter - Change the exposure of an image
 GainFilter - Adjusts gain and bias
 GammaFilter - Adjusts image gamma
 GrayFilter - Grays out an image
 GrayscaleFilter - Converts to grayscale
 HSBAdjustFilter - Adjusts hue, saturation and brightness
 InvertAlphaFilter - Inverts the alpha channel
 InvertFilter - Inverts image colors
 LevelsFilter - Adjust image levels
 LookupFilter - Change image colors with a lookup table
 MapColorsFilter - Replace a color
 MaskFilter - Channel masking
 PosterizeFilter - Posterization
 QuantizeFilter - Quantize an image to 256 colors for, say, GIF export
 RescaleFilter - Multiplies colors by a scaling factor
 RGBAdjustFilter - Adjusts red, green and blue levels
 SolarizeFilter - Solarization
 ThresholdFilter - Thresholding
 TritoneFilter - Create a tri-tone image


1.3.Photoshop CS6常用8大滤镜中文集合版
hotoshop 中的滤镜主要是用来实现图像的各种特殊效果,它在Photoshop中具有非常重要的作用,是一个用于产生图像特殊效果的工具。滤镜的操作虽然非常简单,但是真正用起来却很难恰到好处。现为大家提供这款Photoshop CS6常用8大滤镜中文集合版,使用很简单。
八个滤镜包括:
1、Alien.Skin.xenofex2
2、Eye Candy 5 Textures
3、Eye Candy 4000
4、NikColorEfex3 
5、抽出滤镜
6、灯光工厂3.0
7、然烧的梨树
8、人像磨皮滤镜2.3
安装方法:直接解压路径Adobe Photoshop CS6\Plug-ins\Panels,重起Photoshop即可使用。
具体说明:
Alien Skin Xenofex 2.0 汉化版
Xenofex 是Alien Skin公司一款功能强大的滤镜软件,是各类图像设计师不可多得的好工具。
Xenofex 2 Xenofex滤镜主要分:
Baked Earth(干裂效果),它能制作出干裂的土地效果。
Constellation(星群效果),它能产生群星灿烂的效果。
Crumple(褶皱效果),它能产生十分逼真的褶皱效果。
Flag(旗子效果),它能制作出各种各样迎风飘舞的旗子和飘带效果。
Distress(撕裂效果),能制作出一些自然剥落或撕裂文字的效果。
Lightning(闪电效果),能产生无数变化的闪电效果。
Little fluffy clouds(云朵效果),能生成各种云朵效果。
Origami(毛玻璃效果),能生成一种毛玻璃看东西的效果。
Rounded rectangle(圆角矩形效果),能产生各种不同形状的边框效果。
Shatter(碎片效果),能生成一种镜子被打碎的效果。
Puzzle(拼图效果),能生成一种拼图的效果。
Shower door(雨景效果),能生成雨中看物体的效果。
Stain(污点效果),能为图片增加污点效果。
Television(电视效果),能生成一种老式电视的效果。
Electrify(充电效果),能产生一种充电的效果。
STMPER(压模效果),可以满足您对于特殊平面影像创作上的需求。


1.4.史上超强图像处理开源工具包--ImageMagick 
1.5.Thumbnailator是一个用来生成图像缩略图的Java类库
1.6.Java Image Filters它几乎提供了PS上大部分的图像特效
 是一款基于Java的图像处理类库,特别是在图像滤镜特效方面,Java Image Filters简直就是强大到天衣无缝。它几乎提供了PS上大部分的图像特效


强大的Java图像滤镜特效类库Java Image Filters – 码农网.html
1.7.Apache Commons Imaging 前身是 Apache Commons Sanselan ,这是一个用来读写各种图像格式的 Java 类库


作者:: 绰号:老哇的爪子 ( 全名::Attilax Akbar Al Rapanui 阿提拉克斯 阿克巴 阿尔 拉帕努伊 ) 
汉字名:艾提拉(艾龙),   EMAIL:1466519819@qq.com
转载请注明来源: http://blog.csdn.net/attilax
Atiend

2013-04-10 14:51:37 mlkiller 阅读数 4431
  • 【Python全栈】第六周 Django框架

    本周课程主要讲解Python的Web框架Django,具体有Django框架的安装、快速入门、URL路由配置、Model模型、View视图、Template模板、以及常用的web工具和其他核心功能。通过本周学习让学员可以掌握:Django框架的快速搭建、使用网站Admin后台管理、数据库表信息的增、删、改、查、验证码的使用、文件上传,图片处理、数据分页和富文本编辑器的使用等等技能。

    726 人正在学习 去看看 CSDN就业班

本章主要讲图像处理中的模糊处理部分

英文叫做blur, 也叫做smootiing,  中文中叫做模糊或者平滑。

用过photoshop的人都应该知道,滤镜里面就有模糊这个选项,我们现在看看它是怎么实现的。

一含义

   模糊(平滑)是一种常用的图片处理方式,它的作用可以用来降低噪声,还有其他用途

   看一下opencv 里面的公式

               g(i,j) = \sum_{k,l} f(i+k, j+l) h(k,l)

     g(i,j)是目标坐标的像素值, f(i+k,j+l)是k,l这些地方的像素值, h(k,l)是 kernel,  我不知道怎么去准确翻译它的意义,它是过滤器的系数。 

    简单的按照我的思路去理解,就是一个权值,模糊的含义是将所有的像素按照一定的权值进行运算,得到一个比较均衡的结果。

二 类型

类型有很多种:
均值模糊(box blur) 高斯模糊(gaussian blur)  中值模糊(media blur) 二值模糊(bilateral blur)
本文只讲均值模糊和高斯模糊

三 算法

1 均值模糊
   均值模糊很简单就是周边所有的影响都是1,求平均值即可
K = \dfrac{1}{K_{width} \cdot K_{height}} \begin{bmatrix}    1 & 1 & 1 & ... & 1 \\    1 & 1 & 1 & ... & 1 \\    . & . & . & ... & 1 \\    . & . & . & ... & 1 \\    1 & 1 & 1 & ... & 1   \end{bmatrix}
2 高斯模糊
关于高斯模糊的算法,推荐这个文章
根据这个公式计算出系数即可。
上篇文章写得很详细,我就不班门弄斧了。

四均值模糊的代码和效果

     先放上均值模糊的代码
void boxblur(Mat input ,Mat &out, int x, int y)
{
	// accept only char type matrices
	CV_Assert(input.depth() != sizeof(uchar));

	out.create(input.size(),input.type());

	int nChannels = input.channels();
	int nRows = input.rows;
	int nCols = input.cols;

	int size = x * y;
	float kernel = 1.0/size;

	int i,j;
	uchar* p;
	uchar* q;
	uchar R,G,B;

	for( i = x; i < nRows - x; ++i)
	{
		q = out.ptr<uchar>(i);
		for ( j = y; j < nCols - y; ++j)
		{
			float sumR = 0;
			float sumG = 0;
			float sumB = 0;
			for (int k =0; k<x;k++)
			{
				p = input.ptr<uchar>(i-x+k);
				for(int l = 0; l < y;l++)
				{
					sumB += input.at<uchar>(i - x + k,(j + l - y)*nChannels) * kernel;//p[(l + j -y)*nChannels ] * kernel;
					sumG += input.at<uchar>(i - x + k,(j + l - y)*nChannels + 1) * kernel;//p[(l + j -y)*nChannels + 1] * kernel;
					sumR += input.at<uchar>(i - x + k,(j + l - y)*nChannels + 2) * kernel;//p[(l + j -y)*nChannels + 2] * kernel;
				}
			}
			q[j*nChannels] = sumB;
			q[j*nChannels+1] = sumG;
			q[j*nChannels+2] = sumR;
		}
	}


}

红色部分是我想直接用at,而不用指针,但是效率低的厉害。


下图是用指针的相差了20倍。。。可见指针虽然万恶,但是确实是个好东西。



由于size(4,4)图太小看不清, 实际用的是8
原始 opencv 本文


五高斯模糊的代码和效果

代码如下:

void gaussblur(Mat input ,Mat &out, int x, int y)
{
	float sigma = 1.5;
	Mat kernel;
	float pi = 3.1415926;

	kernel.create(x ,y ,CV_32F);

	float mx = x/2.0;
	float my = y/2.0;

       //这里有问题,后面做修正。
	for (int i =0; i< x;i++)
	{
		for (int j =0; j<y;j++)
		{
			kernel.at<float>(i,j) = exp(-1 * ((i - mx) * (i - mx) +(j - my) * (j-my) )/( 2 * sigma * sigma))/(2 * pi * sigma *sigma) ;
		}
	}


    int nChannels = input.channels();
	int nRows = input.rows;
	int nCols = input.cols;

	out.create(input.size(),input.type());
    uchar* p;
	uchar* q;
	float* s;

	for(int  i = x; i < nRows - x; ++i)
	{
		q = out.ptr<uchar>(i);
		for (int j = y; j < nCols - y; ++j)
		{
			float sumR = 0;
			float sumG = 0;
			float sumB = 0;
			for (int k =0; k<x;k++)
			{
				p = input.ptr<uchar>(i-x+k);
				s = kernel.ptr<float>(k); 
				for(int l = 0; l < y;l++)
				{
					sumB += p[(l + j -y)*nChannels ] * s[l];//input.at<uchar>(i - x + k,(j + l - y)*nChannels) * kernel;//
					sumG += p[(l + j -y)*nChannels + 1] *s[l];//input.at<uchar>(i - x + k,(j + l - y)*nChannels + 1) * kernel;//
					sumR += p[(l + j -y)*nChannels + 2] * s[l];//input.at<uchar>(i - x + k,(j + l - y)*nChannels + 2) * kernel;
				}
			}
			q[j*nChannels] = sumB;
			q[j*nChannels+1] = sumG;
			q[j*nChannels+2] = sumR;
		}
	}

	
}

效率如下:

效果图如下:
本文没有考虑边界的情况,所以都是灰色的,可以考虑一下如何处理边界。
原始 opencv 本文

上面代码有两处问题:
第一是在size比较小的时候,这些点的概率之和不等于1,会导致图片出问题。修正如下:

	float sum = 0;
	for (int i =0; i< x;i++)
	{
		for (int j =0; j<y;j++)
		{
			sum+= kernel.at<float>(i,j) = exp(-1 * ((i - mx) * (i - mx) +(j - my) * (j-my) )/( 2 * sigma * sigma))/(2 * pi * sigma *sigma) ;
		}
	}
	for (int i =0; i< x;i++)
	{
		for (int j =0; j<y;j++)
		{
			kernel.at<float>(i,j) = kernel.at<float>(i,j)/ sum ;
		}
	}


第二个问题是本文中sigma 是个固定值,实际上它是个可变值,具体怎么计算,我没有搞清楚,可以查看opencv的源代码,下面文章有参考价值

更新一下参考opencv里面的可以这样计算
sigma = 0.3*((ksize-1)*0.5 - 1) + 0.8 .
修改程序之后发现和原始的高斯函数基本一致,希望广大朋友们多多评论,本人水平有限,很多地方有纰漏,希望能够共同提高。
没有更多推荐了,返回首页