Solo  当前访客:1 登录 注册
☆gater yu☆

~~ 一个java老鸟的博客 ~~

标签:
java图像处理基础与图像特效 (23)

前言

(转载本系列请注明作者和出处:http://blog.csdn.net/epleone)暑假有点时间,用java重写了图像处理的一些基本算法。现在把它贴上来,希望能够帮助更多对图像处理感兴趣的童鞋。算法都是用java实现的,但是原理很清楚,所以无论是否会java,都可以用C++,matlab,Python很方便的重现。考虑到程序员的惰性,我不会提供可以直接运行的代码。但可以保证,认真看完blog的...

作者:sky | 创建日期: 2015-03-24 13:18 | 浏览次数: 217 | 评论总数: 0 | 标签:

图像处理基础

眼睛是心灵的窗口,至少有80%以上的外界信息经视觉获得,视觉是人和动物最重要的感觉。我们都知道,通过三原色我们就能感受到颜色。如图:而计算机保存图像常见的色彩模式中,经常用的也是RGB色彩模式。在计算机中,图像一般是M*N的矩阵,每一个点就是一个像素。一般来说,我们采用32位保存图像中每个像素点的信息。其中高八位是透明度alpha,然后八位依次为Red,Blue,Green。共32位。平时我们用的...

作者:sky | 创建日期: 2015-03-22 19:02 | 浏览次数: 258 | 评论总数: 0 | 标签:

java加载图像,显示图像和图像的灰度化

阅读前请看<前言>,谢谢!用java基础包中,提供了图像的类,我们常用到的有java.awt.image.BufferedImage,javax.imageio.ImageIO等等,事实上这两个类就够了。前一个有关图像的基本操作,后一个为读取图像。加载图像:BufferedImageimg=null; try{ img=ImageIO.read(newFileInputStrea...

作者:sky | 创建日期: 2015-03-21 00:46 | 浏览次数: 317 | 评论总数: 0 | 标签:

java图像灰度直方图

希望你了解下<前言>上一篇文章中,已经说过了图像的灰度化,灰度化之后,我们希望了解像素在0-255的分布情况。这就是我们下面要说的图像的灰度直方图,这是最简单的一种。但是原理都是一样的。图像的直方图有大量的用处,它反应了图像的某些特征,以至于可以用来进行图像搜索。获得直方图信息代码如下:publicint[]hist(){ toGray(); int[]hist=newint[25...

作者:sky | 创建日期: 2015-03-19 06:30 | 浏览次数: 511 | 评论总数: 0 | 标签:

java图像的二值化与大津阈值法

阅读前请看<前言>,谢谢!这篇主要关注于图像的二值化,即在灰度化的基础上,进行阈值分割。二值化的方法很多,事实上,在图像进行处理的时候,能够完美的分割出目标区域,那么已经成功了一大半,可见二值化的重要性。本文主要介绍三种二值化方法。1.固定阈值法,设定好阈值,大于该阈值的像素点设为255,否则为0,这是最简单的,效果也是最不稳定的。<spanstyle="font-siz...

作者:sky | 创建日期: 2015-03-17 12:14 | 浏览次数: 339 | 评论总数: 0 | 标签:

java图像的放大与缩小

阅读前请看<前言>,谢谢!图像的放大,需要补充没有的像素,常用的方法有1.最临近点插值算法(NearestNeighbor)2.双线性插值算法(BilinearInterpolation)3.双立方插值算法(BicubicInterpolation)等等,详细介绍请看(图像放大算法)现在给出用最临近点插值方法将图像放大两倍的代码<spanstyle="font-size:...

作者:sky | 创建日期: 2015-03-15 17:59 | 浏览次数: 247 | 评论总数: 0 | 标签:

java图像的直方图均衡化

阅读前请看<前言>,谢谢!直方图均衡化,就是让图像的直方图尽量的平均,0-255每个的概率都相等。其公式如下:这个证明在任何一本图像处理教材上都可以找到。下面提供实现代码:publicvoidhistequalization(){ toGray(); double[]hist=math.Norm(hist()); for(inty=0;y<h;y++){   for(int...

作者:sky | 创建日期: 2015-03-13 23:43 | 浏览次数: 248 | 评论总数: 0 | 标签:

java图像旋转

阅读前请看<前言>,谢谢!图像的旋转,需要用到旋转矩阵。顺时针旋转矩阵为:逆时针旋转矩阵为:我们以图像中心为旋转点,进行逆时针旋转alpha度的代码如下:publicvoidRotation(doubledegree){ degree=Math.toRadians(degree);//化为弧度intsw=(int)Math.sqrt(w*w+h*h);//旋转后图像的wintsh=...

作者:sky | 创建日期: 2015-03-12 05:27 | 浏览次数: 499 | 评论总数: 0 | 标签:

java图像的腐蚀与膨胀

阅读前请看<前言>,谢谢!腐蚀:把结构元素B平移a后得到Ba,若Ba包含于X,我们记下这个a点,所有满足上述条件的a点组成的集合称做X被B腐蚀(Erosion)的结果。用公式表示为:E(X)={a|BaX}=XB,如图所示膨胀:可以看做是腐蚀的对偶运算,其定义是:把结构元素B平移a后得到Ba,若Ba击中X,我们记下这个a点。所有满足上述条件的a点组成的集合称做X被B膨胀的结果。用公式表...

作者:sky | 创建日期: 2015-03-10 11:11 | 浏览次数: 340 | 评论总数: 0 | 标签:

java边缘检测sobel算子和Prewitt算子

阅读前请看<前言>,谢谢!在进行本人之前,希望大家先了解卷积。学过概率论的应该都知道,在求解Z=X+Y的概率密度的时候,引入了卷积公式这就是f与g在连续情况下的卷积。对于图像而言,离散更重要。这就是离散卷积,公式看得头疼的童鞋不要急。其实对于特定的点而言,卷积就是它附近M*N范围内所有元素的概率和。见下图:卷积我并不打算详细的去说,不懂的童鞋好好去翻翻资料。可以看看图像处理(卷积),对...

作者:sky | 创建日期: 2015-03-08 16:55 | 浏览次数: 294 | 评论总数: 0 | 标签:

java图像卷积运算,高斯模糊以及拉普拉斯算子

阅读前请看<前言>,谢谢!关于卷积,在上一篇中我们已经提到来,不明白的童鞋可以去看上一篇。看到题目,聪明的童鞋应该明白他们直接的关系了。对于卷积运算,采取不同的模板(Mask),就能得到不同的结果,先实现卷积运算。代码如下:publicvoidfilter(double[][]mask){ toGray();//灰度化 intmh=mask.length; intmw=mask[...

作者:sky | 创建日期: 2015-03-06 22:39 | 浏览次数: 374 | 评论总数: 0 | 标签:

javahough变换(霍夫变换)检测直线

阅读前请看<前言>,谢谢!霍夫变换(HoughTransform)是图像处理中的一种特征提取技术,他是检测和定位直线和解析曲线的有效方法,它通过将边缘二值图像变换到Hough空间,在参数空间用极值点的检测来完成目标的检测。就直线检测而言:在极坐标中ρ=xcos(θ)+ysin(θ)表示一条直线。其中(ρ,θ)确定一条直线,因此可以先将图片进行边缘检测,然后对图像上每一个非零像素点,在参...

作者:sky | 创建日期: 2015-03-05 04:24 | 浏览次数: 223 | 评论总数: 0 | 标签:

java图像特效之老照片

阅读本系列,请先看前言!谢谢让图像微微泛黄~是不是充满回忆呢~本文先给出一种实现方法(参考:图像处理之老照片特效)算法步骤如下:1.首先对图像重新计算RGB值,计算公式如下:intfr= (int)(((double)tr *0.393) + ((double)tg *0.769) + ((double)tb *0.189));intfg = (int)(((double)tr *0.349) +...

作者:sky | 创建日期: 2015-03-03 10:08 | 浏览次数: 471 | 评论总数: 0 | 标签:

java图像特效之黑白浮雕和底片

阅读本系列,请先看前言!谢谢所谓黑白图片其实就是对图像进行去色,也就是灰度化,只要调用之前写过的灰度化函数即可。底片的原理就是对RGB取补色即可。也就是将当前像素点的RGB值分别与255之差后的值作为当前点的RGB值,即R=255–R;G=255–G;B=255–B;浮雕其实就是一种边缘检测,在图像处理基础那个系列中,介绍过的sobel算子,Prewitt算子或者是拉普拉斯算子我觉得都有着类似的效...

作者:sky | 创建日期: 2015-03-01 15:52 | 浏览次数: 206 | 评论总数: 0 | 标签:

java图像特效之素描

阅读本系列,请先看前言!谢谢对于素描,先介绍算法,一般而言素描的算法如下:1.图像灰度化2.求图像的底片3.对底片进行高斯模糊4.模糊后的结果与灰度图像进行图像混合,效果为颜色减淡(图像混合,后面我也会写一篇文章讨论下),公式为:C=MIN(A+(A×B)/(255-B),255)既然知道了算法,现在开始代码:publicImagefilter(){ if(!this.img.gray) ...

作者:sky | 创建日期: 2015-02-27 21:36 | 浏览次数: 290 | 评论总数: 0 | 标签:

java图像特效之油画

阅读本系列,请先看前言!谢谢油画也算是一种常见的艺术品了,谁说咱们IT男不懂艺术~我们还能创造艺术,不多说,先说原理。油画的算法很简单,对某一像素,用它附近随机一个像素来代替。没错就这么简单。上代码:publicImagefilter(){ if(this.img.gray) returnthis.img;//Grayscaleimagescannotbeprocessed int...

作者:sky | 创建日期: 2015-02-26 03:20 | 浏览次数: 223 | 评论总数: 0 | 标签:

java图像特效之随机光晕

阅读本系列,请先看前言!谢谢光晕,听起来很美。实现起来也很简单,本文实现了一个随机光晕。属于比较简单的。那种美伦美幻的,比较复杂,先从简单的开始~所谓光晕,就是中间特别亮,然后向四周递减,在最边缘达到和正常一样~,我们只要在一个随机圆的范围内,给图像增加亮度即可。说完原理,来看代码:publicImagefilter(){ int[]d=newint[this.img.w*this.img....

作者:sky | 创建日期: 2015-02-24 09:04 | 浏览次数: 206 | 评论总数: 0 | 标签:

java图像特效之霓虹

阅读本系列,请先看前言!谢谢老实说,我也不知道什么是霓虹,但是在网上搜滤镜算法的时候看到了这个算法,就顺手实现了,所以童鞋们有什么想要实现的算法,可以把原理告诉我~事实上,它实现的结果和我之后要写的彩色边缘很像,都奉献给大家了。算法原理:对于3*3点阵,首先计算原图象像素f(i,j)的红,绿,蓝分量与相同行f(i+1,j)及同列f(i,j+1)相邻象素的梯度,即差的平方之和的平方根,然后将梯度值作...

作者:sky | 创建日期: 2015-02-22 14:49 | 浏览次数: 226 | 评论总数: 0 | 标签:

java图像特效之放大镜与哈哈镜

阅读本系列,请先看前言!谢谢放大镜与哈哈镜原理上是一样的,我们只要找到相关映射即可。如这张图所示。不同的映射会有不同的效果,如线性映射会产生放大缩小的感觉,凸函数则会是凸透镜,凹函数就是凹透镜,原则上,不同的函数就不会产生不同的结果当然对函数也有一定的要求,比如在变化区域的边缘要保持不变。说完原理,先上放大镜的代码:publicImagefilter(){ int[]d=newint[this....

作者:sky | 创建日期: 2015-02-20 20:33 | 浏览次数: 544 | 评论总数: 0 | 标签:

java图像处理之颜色矩阵(ColorMatrix)内附大量特效

阅读本系列,请先看前言!谢谢之前的文章中一直有说到颜色矩阵~现在终于是揭开它的面纱的时候了~其实android中这个是自带的。android中可以通过颜色矩阵(ColorMatrix类)方面的操作颜色,颜色矩阵是一个5x4的矩阵(如图1.1)可以用来方面的修改图片中RGBA各分量的值,颜色矩阵以一维数组的方式存储如下:[a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t...

作者:sky | 创建日期: 2015-02-19 02:17 | 浏览次数: 368 | 评论总数: 0 | 标签:

1 2   共 2 页面