2004毕业于山东大学齐鲁软件学院,软件工程专业。主要专注于图像处理算法学习与研究,计算机视觉技术开发应用,深度学习在计算机视觉领域应用。两本书籍《Java数字图像处理-编程技巧与应用实践》、《OpenCV On Android编程实践》作者
图像处理之调整亮度与对比度 很多时候,一张图像被过度曝光显得很白,或者光线不足显得很暗,有时候背景跟图像人物 也观察不清楚,这个时候可以通过调节图像的两个基本属性-亮度与对比度来获得整体效果 的提升,从而得到质量更高的图片。
详细解释电子邮件中POP3协议及最小化实现 1. 什么是POP3 POP3的英文全称Post OfficeProtocol Version 3,POP3协议本质上是一种消息传递协议 主要用来在支持POP3客户端和POP3邮件服务器端通信,基于TCP协议之上的应用层协议 POP3协议主要用来读取邮件服务器上的电子邮件。
关于什么是卷积,如何理解卷积 参见这里: http://blog.csdn.net/jia20003/article/details/7038938 一:轧花 轧花算子(embossfilter) 对一幅数字图像一阶微分结果即可得到轧花效果,根据不同的算子,轧花又 可以分为凹效果与凸效果两种。
协议完成有: - 最小化完成了RFC821, RFC822, 简单的邮件发送协议,邮件格式化协议 - 最小化完成RFC4648 - Base64编码协议 - 完成扩展协议[MS-XLOGIN] - 基于SSLSocket完成的支持 SSL, TLS等加密SMTP传输协议 基于Swing程序界面: 支持操作如下: - 设置 SMTP Server, 端口, 用户名和密码 - 编辑简单纯文本E-Mail内容,发送E-Mail 项目文件列表: 基于Swing的Model和View分离原则完成编码。
图像处理之文字轧花效果- 简单数字水印 @ gloomyfish 首先看一下效果,左边是一张黑白的文字图像,右边是混合之后的数字水印效果 实现原理 主要是利用位图块迁移算法,首先提取文字骨架,宽度为一个像素。
讨论如何使用卷积作为数学工具来处理图像,实现图像的滤波,其方法包含以下几种,均值 滤波,中值滤波,最大最小值滤波,关于什么是卷积以及理解卷积在图像处理中作用参见这 里–http://blog.csdn.net/jia20003/article/details/7038938 均值滤波: 均值滤波,是图像处理中最常用的手段,从频率域观点来看均值滤波是一种低通滤波器,高 频信号将会去掉,因此可以帮助消除图像尖锐噪声,实现图像平滑,模糊等功能。
基本思路: 首先绘制一个矩形背景,设置颜色为灰色。在背景上绘制一个简单的矩形外边框,然后再绘 制一个内边框,接着加载选定的图像做为电子钟内部的背景图片。然后开始绘制时钟刻度, 绘制分钟刻度,最后获取当前系统时间,绘制时分秒三个手柄。
写了很多篇关于图像处理的文章,没有一篇介绍Java 2D的图像处理API,文章讨论和提及的 API都是基于JDK6的,首先来看Java中如何组织一个图像对象BufferedImage的,如图: 一个BufferedImage的像素数据储存在Raster中,ColorModel里面储存颜色空间,类型等 信息,当前Java只支持一下三种图像格式- JPG,PNG,GIF,如何向让Java支持其它格式,首 先要 完成Java中的图像读写接口,然后打成jar,加上启动参数- Xbootclasspath/p newimageformatIO.jar即可。
图像处理之光束效果 原理: 光束滤镜,对一幅图像完成光束效果,好似有一束光从图像本身激发出来,按照一定的角度 散发开来,光束滤镜是一种图像叠加效果,首先要借助于之前的完成的移动模糊滤镜,将一 幅图像按照一定的阈值二值化以后,加以移动模糊滤镜,将移动模糊之后的图像和原图像叠 加就产生了光束滤镜效果。
- created by gloomyfish 卷积模糊或者卷积平滑滤波,可以消除图像噪声,也可以产生一些常见的图像模糊特效,但 是移动模糊特效也是基于卷积,相比于Box Blur, Gaussian Blur的算法,移动模糊只需要完成 一次的一维卷积,所不同的是一维卷积的完成,要基于一定的角度,而不是只是在水平和垂 直两个方向上。
高斯模糊是一种两维的卷积模糊操作,在图像完成高斯模糊相对于均值模糊来说, 计算量会增加,但是高斯模糊可以实现一些特殊效果,特别是在图像噪声(非椒盐 噪声)消去方面,更是有着非常好的效果。一维高斯公式如下: 其中x是制定[-n,n]范围的整数,sigma代表标准方差。
一实现思路: 实现原理主要是利用HTML5的Canvas组件提供的path函数功能来绘制圆,首先绘 制两个半圆,分别为黑色和白色,组成一个圆,绘制完成以后再分别绘制一个黑色 和白色的圆在绘制好的黑白圆之内,半径恰好是黑白大圆一半。
HTML5发布已经有很长一段时间了,一直以来从来没有仔细的看过,过年刚来随便看看 发现HTML5中的Canvas组件功能是如此的强大,不怪很多牛人预言Flash已死,死不死 不是我要关心的,我关心的Canvas可以很轻松在网页中实现简单相框和图像灰度化。
柏林噪声是一种特殊的随机噪声,即对于每个给定的值产生的随机数是唯一的,但是不同的 值产生不同的随机数。关于柏林噪声更详细的解释可以参考这里: http://freespace.virgin.net/hugo.elias/models/m_perlin.htm 本文主要是探讨如何使用柏林噪声产生火焰效果与乌云效果的纹理,在解释实现代码之前, 首先来看一下影响柏林噪声效果的两个参数音度(Octave) 与余辉(Persistence),可以调节 纹理的大小和密度。
图像处理之快速均值模糊(Box Blur) 图像模糊的本质, 从数字信号处理的角度看,图像模糊就要压制高频信号保留低频信号, 压制高频的信号的一个可选择的方法就是卷积滤波。选择一个低频滤波器,对图像上的 每个像素实现低频滤波,这样整体效果就是一张数字图像更加的模糊,显示更少的细节信息。
无意之中在网上看到一篇基于HTML5 Demo的Peter De Jong 吸引子生成图像的Demo,没Hold住, 感觉太漂亮了。于是想研究一下,发现有个专业术语 - 分形。一位大师这样评价分形学科 - “it is not about math, it is about art” 显然有时候程序员也是有点艺术细胞。
图像噪声源于现实世界中数字信号总会受到各种各样的干扰,最终接受的图像和源于的数字信号之间总 是存在一定的差异,对于图像噪声,使用均值滤波和中值滤波来消除图像噪声的做法已经是很常见的图 像消噪手段。
在Android上实现图像颜色过滤与反转 一:原理 Android已经提供了以resource形式加载图片,使用BitmapFactory的decodeResource 方法获取一个Bitmap对象,从Bitmap对象中读取图片的像素数组,基于像素ARGB值实现 颜色过滤和颜色反转。
一:基本原理 利用Java 2D的Area对象对绘制形状几何操作的支持,完成太极图案的绘制,使用Paint来 完成对不同颜色的填充。Java 2D图形API Area对Shape支持四种几何操作: - Add (加)- 保留两个几何形状及其重叠部分 - Subtract (减) – 从第一个几何形状上减去和第二个重叠的部分,保留减去之后的第一个几 何形状 - Intersect (与) – 只保留两个几何形状重叠的部分。
1. 在画布上绘制(Draw with a Canvas) Android提供了自定义的绘制API,可以绘制各种图形,文字,图像对象在Canvas上,而事 实上所有在Canvas对想都会被绘制到Canvas底层的Bitmap对象上面,创建一个Canvas 对象的语句如下: Bitmap b =Bitmap.createBitmap(100, 100, Bitmap.Config.ARGB_8888); Canvas c =new Canvas(b); 首先创建一个32位的位图对象,类型是ARGB,然后在这个位图对象上创建一个画布(Canvas) 对象。
图像处理之理解卷积 一:什么是卷积 离散卷积的数学公式可以表示为如下形式: f(x) = - 其中C(k)代表卷积操作数,g(i)代表样本数据, f(x)代表输出结果。 举例如下: 假设g(i)是一个一维的函数,而且代表的样本数为G = [1,2,3,4,5,6,7,8,9] 假设C(k)...
有过UI设计经验的一定对2D图形渲染中的Color Gradient 或多或少有些接触,很多编程 语言也提供了Gradient的接口,但是想知道它是怎么实现的嘛? 本文介绍三种简单的颜色梯度变化算法,就可以很容易实现常见的梯度变化算法 三种都要求提供两个参数即起始颜色RGB值, 最终颜色RGB的值。
数学原理: 首先看两张图片,大小均为256 * 256个像素, 第一张是纯蓝色 图一: 第二张是加有随机噪声的蓝色 图二: 产生随机噪声的算法简单的不能再简单了 假设RGB的R与G颜色分量均为零, 则 Blue = 255 * Math.
基本原理: 图像的透明混合有个专属名词– Alpha Blending 对任意两张图像可以合成为一张图像,合成图像的像素取值根据数学公式: RGB3 = (1- a) * RGB1 + a * RGB2 其中a为混合透明度取值范围[0, 1]之间, RGB3为目标像素值, RGB1与RGB2的值分别来自两 张不同的图像。
图像放缩之双立方插值 一:数学原理 如果已知一个函数f(x)以及它在x=0,x=1处的导数,那么函数可以在[0,1]之间插值,当函数 表达为三次多项式时我们称之谓立方插值。一个三次多项式及其导数: f(x) =ax^3 +bx^2 + cx + d ...
一:数学原理 在临近点插值的数学基础上,双线性插值,不是简单copy源像素的值,而是获取四个最邻 近目标像素的像素值乘以权重系数,简单的数学公式可以表示为: D(x, y) = S(j, k) * a + S(j+1, k) *b + S(j+1,k+1) * c + S(j, K+1...
一:数学原理 当一幅二维数字图像从源图像N*M被放为(j*N) * (k*M)目标图像是,参照数学斜率计算公式 必然有: (X1 – Xmin)/(Xmax - Xmin) = (Y1 - Ymin)/(Ymax-Ymin) 当Xmin 和 Ymin均为从零开始的像素点时,公式...
一:概述 本文代码在JDK6u20版本调试通过,通过对像素的抓取处理和利用TexturePaint对BufferedImage对象的支持 从而实现对任何JComponent组件的放大镜效果。
Java Swing 2D系统属性参数详解 -Dsun.java2d.opengl=true // 如果硬件加速已经被enable,可以通过这个选项来提高Swing GUI 速度,默认值为false -Dsun.java2d.trace=[log[,timestamp]],[count],[out:],[help],[verbose] //帮助发现哪个Swing组件在绘制时有性能问题。
Android应用中如何保护JAVA代码 Java Classes字节码的反编译太容易了,有很多功能强大的反编译利器可以轻松的将Java字节码 反转为源代码,但是android中普通.apk文件可以轻松的被反编译为Java源代码吗? 答案是当然可以,而且是相当的轻松,具体步骤如下: 1.
JVM内存泄漏检测与处理(JVM Memory Leak detection and handling) JVM垃圾回收机制的原则和方法 JVM垃圾回收中一个基本原则是对象没有被引用或则引用其它对象,换句话说当一个对象在heap 中是隔离(isolation)状态的时候,垃圾回收器就会自动回收分配给这个对象的堆内存空间。
Java创建透明与任意形状窗口 一: Java 2D图形基础知识 自从Java Swing发布以来,Java的图形能力得到了很大的提升,JDK6的高级版本开始支持创 建自定义形状的JFrame,结合Java 2D图形的相关API,可以实现任意形状JFrame的创建。
Get to know JSON 一:什么是JSON 术语JSON源于三个英文单词(JavaScript Object Notation)的缩写。JSON是一种轻量级的数据交换格式,非常易于人们读写和计算机解析和生成。
20. That's weird.... 19. It's never done that before. 18.
Background: currently JFreechart did not support domain axis zoom with category plot, the domain and value axis is zoomable only for XYPlot, h...
数据分析之 – 离群值(Outliers) 一:什么是Outliers Outliers是统计学专业术语,是指相比一组数据中的其它数据的极限值 二:极限值意味什么 1.
一:什么是散点图 - What is a scatter plot 任何数据分析的第一步是图形化曲线显示数据,根据相互关系,图形曲线被称为散点图。散点图可以表示两个变量之间真实的关系强度,关系的趋势,是否存在Outliers 二:散点图的目的是什么 ü ...
关于手机网站你想知道的一切 - all you want to know about a mobile website 介绍(introduction) 如今越来越多的人打算开发自己的网站尤其是基于移动设备的,这么做的原因很简单。
最近经常跟数值计算的东西打交道,特别是大量样本的统计计算,在常见的描述统计结果中,最常用到的是一下几种: - 一组样本的平均价值 - 一组样本的中值 - 一组样本中的最小值 - 一组样本中的最大值 - 一组样本的和 - 一组样本的标准方差 其中,样本N(X[1].
Summary: just provide any JPanel which you want to make it diaplay as full screen mode, it's very helpful for you to use this utility class.
除夕辞旧岁,新年感物华; 电波亦无声,祝福两心知; 爆竹云霄响,烟花璀璨开; 一语春到早,幸福阖家欢。 神马都给力,happy new year
不说什么了,直接贴代码吧!呀的也太直接了点这博客写的 import java.awt.BorderLayout; import java.awt.GridBagConstraints; import java.
Base64编码介绍及基于Java语言实现 Base64编码被设计用来表示任意顺序的八位一个字节单元,允许使用大写和小写字符而不要求内容可读。65个US-ASCII子集被用来表示Base64编码,所以每六位表示一个可以打印的Base64的字符,第65字符’=’被用来表示特殊处理的功能字符,后面会详细说明。
一个字符串参数(value)由字母(a-z,A-Z)组成,且最大字符位数为40,要求写一个函数(maxLength)返回该参数中连续相同字母的最大个数及该字母,如果最大位数有多个,则返回第一个。
有一句古诗云:夜来风雨声,花落知多少,套用一下空指针异常抛出来,原因知多少。 使用Java语言开发应用程序不管是J2SE还是J2EE的,没有几个开发者没经历空指针异常 (NullPointerException)错误的,作为一个runtime Exception最为常见的几种原因是: 1.
Background :google android SDK platform provide emulator & ADB utility tools,it's very useful to decompile the apk file to dump byte readable file.
Java GUI Testing - JFCUnit Introduce Background: JFCUnit is an extension to the popular testing framework JUnit.
Java code implementation: Search Algorithm class - package com.programmingpearls.study; public class SearchAlg { private static int[]...
* ------------------------------------------------------------------------------------ Title: TestJava.
说明:基于Eclipse 3.2 + Tomcat 4.0编译完成 1.完成你自己的Tag Class,javax.servlet.jsp中提供一个Tag接口类 TagSupport 和 BodyTagSupport两个类,你自己的Tag Class必须 extends其中一个。