我开发了一个用于图像比较的应用程序。我在这里比较颜色。参考图表在数据库中。我的应用程序的工作就像..通过相机捕捉颜色。相机由相机API控制而非意图。并将捕获的图像与参考图表进行比较。我的问题是轻松的。我正在白色背景中捕捉图像..但根据光线变化,输出变化很大。我正在使用欧几里德距离。通过光变化我无法获得正确的输出。有没有人有任何建议:解决光线问题。有没有任何方法来规范图像。?? 即时通讯使用Android 2.2
答案 0 :(得分:0)
答案 1 :(得分:0)
如果您面对浅色背景,那么我建议使用两个图像的所有像素的ARBB值, 你可以比较两个图像的ARGB值,我最近在我的一个项目中完成了这个任务。这是它的小代码。
private int[] getAvgARGB(int[] imagePixels ){ int [] argbColection = new int[4]; int pixcel=0 , Aavg=0 ,Ravg =0, Gavg=0 ,Bavg=0 ; int pixcelSize = 0 ; for(int i = 0 ; i<imagePixels.length; i++){ pixcel = imagePixels[i]; //get pixel value (ARGB) int A = (pixcel >> 24) & 0xFF; //Isolate Alpha value... int R = (pixcel >> 16) & 0xFF; //Isolate Red Channel value... int G = (pixcel >> 8) & 0xFF; //Isolate Green Channel value... int B = pixcel & 0xFF; //Isolate Blue Channel value... Aavg += A ; Ravg += R ; Gavg += G ; Bavg += B ; } pixcelSize = imagePixels.length ; argbColection[0] = Aavg/pixcelSize ; argbColection[1] = Ravg/pixcelSize ; argbColection[2] = Gavg/pixcelSize ; argbColection[3] = Bavg/pixcelSize ; return argbColection ; }
答案 2 :(得分:0)
如果你想检查这样的色差:
http://en.wikipedia.org/wiki/Color_difference
您可以使用Catalano Framework,
适用于Java和Android。
使用色差的示例:
float[] lab = ColorConverter.RGBtoLAB(100, 120, 150, ColorConverter.CIE2_D65);
float[] lab2 = ColorConverter.RGBtoLAB(50, 80, 140, ColorConverter.CIE2_D65);
double diff = ColorDifference.DeltaC(lab, lab2);