Atitit 图像清晰度 模糊度 检测 识别 评价算法 源码实现attilax总结
1.1. 原理,主要使用像素模糊后的差别会变小
通过计算横向前后俩点像素的差异。。然后累加即可。。
1.2. 具体流程
图片灰度化,这样可以只保留hsv分量了。。。然后读取v分量,就是明亮度了。。
Hs色相和饱和度全部去除了。。 比较v分量的差异即可。。
1.3. 提升性能 可以使用采样法即可。。
1.4. 实现代码
package com.attilax.img;
import java.awt.Color;
import java.awt.image.BufferedImage;
import com.attilax.io.filex;
import com.attilax.json.AtiJson;
import com.jhlabs.image.GrayscaleFilter;
public class DefinTest {
/**
* gray hsv 0,0,218 HSL 表示 hue(色相)、saturation(饱和度)、lightness(亮度),
* HSV表示 hue、saturation、value(色调) 而 HSB 表示 hue、saturation、brightness(明度)。
*
* @param args
*/
public static void main(String[] args) {
String i = "C:\\00clr\\1_gray.jpg";
long dfns = getDefinetionsSum(i);
String blu5 = "C:\\00clr\\2_gray.jpg";
long dfns_blu5 = getDefinetionsSum(blu5);
String blu9 = "C:\\00clr\\blur9_gray.jpg";
long dfns_blu9 = getDefinetionsSum(blu9);
System.out.println("bl0:" + dfns + ",bl5:" + dfns_blu5 + ",bl9:"
+ dfns_blu9);
}
private static long getDefinetionsSum(String i) {
BufferedImage src = imgx.toImg(i);
int sum = 0;
int wid = src.getWidth();
int h = src.getHeight();
for (int w = 0; w < wid; w++)
for (int y = 0; y < h; y++) {
int v = (int) imgx.getHsv(src, w, y).v;
try {
if (y + 1 > (h-1))
continue;
int clr_next = (int) imgx.getHsv(src, w, y + 1).v;
int tsa = Math.abs(v - clr_next);
sum = sum + tsa;
} catch (Exception e) {
System.out.println(e.getMessage()+" w-h:"+w+"-"+y);
}
}
return sum;
}
bl0:2083037,bl5:730898,bl9:600365
作者:: 绰号:老哇的爪子 ( 全名::Attilax Akbar Al Rapanui 阿提拉克斯 阿克巴 阿尔 拉帕努伊 )
汉字名:艾提拉(艾龙), EMAIL:1466519819@qq.com
转载请注明来源: http://blog.csdn.net/attilax
Atiend