虹膜灰度极坐标直方图
2016-05-27 14:34
330 查看
灰度极坐标的直方图,可以比较方便的看到灰度的分布图,直观的看出瞳孔、虹膜边缘特点
虹膜的256灰度图如下:
![](https://img-blog.csdn.net/20160527144535494?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
经过极坐标的直方图转换后,如果如下:
100个点,64灰度直方图
![](https://img-blog.csdn.net/20160527143942317?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
200点,32灰度直方图
![](https://img-blog.csdn.net/20160527144022740?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
400点,32灰度直方图
![](https://img-blog.csdn.net/20160527144048039?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
通过对比,可以看出,用32灰度的瞳孔灰度集中度非常高,一致性很好;
边缘效果上,点数越多,识别的效果越精细,400点的边缘识别越准确。
再给出400点的平均灰度直方图的结果:
![](https://img-blog.csdn.net/20160527154512577?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
直观的看出图像以圆点为中心,颜色越来越明亮;
分别对6张不同虹膜图片的进行直方图计算,原图如下:
![](https://img-blog.csdn.net/20160527163624255?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
![](https://img-blog.csdn.net/20160527163646693?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
![](https://img-blog.csdn.net/20160527163659192?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
![](https://img-blog.csdn.net/20160527163708646?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
![](https://img-blog.csdn.net/20160527163718240?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
![](https://img-blog.csdn.net/20160527163727130?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
对应的直方图计算结果如下:
![](https://img-blog.csdn.net/20160527163831070?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
![](https://img-blog.csdn.net/20160527163845086?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
![](https://img-blog.csdn.net/20160527163906272?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
![](https://img-blog.csdn.net/20160527163915774?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
![](https://img-blog.csdn.net/20160527163925540?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
![](https://img-blog.csdn.net/20160527163934850?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
参考代码如下:
虹膜的256灰度图如下:
经过极坐标的直方图转换后,如果如下:
100个点,64灰度直方图
200点,32灰度直方图
400点,32灰度直方图
通过对比,可以看出,用32灰度的瞳孔灰度集中度非常高,一致性很好;
边缘效果上,点数越多,识别的效果越精细,400点的边缘识别越准确。
再给出400点的平均灰度直方图的结果:
直观的看出图像以圆点为中心,颜色越来越明亮;
分别对6张不同虹膜图片的进行直方图计算,原图如下:
对应的直方图计算结果如下:
参考代码如下:
void GenPlaneHistogram() { PlaneHistogram planeHistogram = new PlaneHistogram(); int c = 100; //可取不同的值,看到不同的效果100/200/400等 int count[] = new int[c + 1]; int countgray[][] = new int[c + 1][(int) (px * py / (Math.sqrt(c)))]; int countgraymax[] = new int[c + 1]; int countgraymaxgray[] = new int[c + 1]; int countgraymaxratio[] = new int[c + 1]; String text[] = new String[c + 1]; Color color[] = new Color[c + 1]; //找出半径最大值,根据半径按照100等分显示 double maxr = 0; double rr = 0; for (int i = 0; i < px; i++) { for (int j = 0; j < py; j++) { if (pixelpolar[i][j] > maxr) { maxr = pixelpolar[i][j]; } } } rr = maxr / c; System.out.println("maxr=" + maxr + ", rr=" + rr); //找出各段的计数 int cc; for (int i = 0; i < px; i++) { for (int j = 0; j < py; j++) { cc = (int) (pixelpolar[i][j] / rr); countgray[cc][count[cc]] = pixelgray[i][j]; count[cc]++; } } float bb; for (int i = 0; i < c + 1; i++) { // System.out.println("count[" + i + "]=" + count[i]); //寻找该区域灰度最大值 //分为32个灰度区 (可取不同的值,看不同的效果,如64,128,256等,有三处地方需要修改,注意!) int countgraycount[] = new int[32]; for (int j = 0; j < count[i]; j++) { // System.out.println("countgray[" + j + "]=" + countgray[i][j]); countgraycount[countgray[i][j]/8]++; } countgraymax[i] = 0; for (int j = 0; j < 32; j++) { // System.out.println("countgraycount[" + j + "]=" + countgraycount[j]); if (countgraymax[i] < countgraycount[j]) { countgraymax[i] = countgraycount[j]; countgraymaxgray[i] = j; // System.out.println("111 [" + i + "]=" + countgraymax[i] + "," + countgraymaxgray[i]); } } countgraymaxratio[i] = countgraymax[i]*100/count[i]; // System.out.println("222 [" + i + "]=" + countgraymax[i] + "," + countgraymaxgray[i]); } for (int i = 0; i < c + 1; i++) { bb = (float) (Math.round(rr * i * 100)) / 100; text[i] = bb + ""; color[i] = Color.GREEN; } //极坐标半径直方图 BufferedImage image = planeHistogram.paintPlaneHistogram("极坐标半径直方图", count, text, color); File output = new File("111.jpg"); try { ImageIO.write(image, "jpg", output); } catch (IOException e) { e.printStackTrace(); } for (int i = 0; i < c + 1; i++) { text[i] = countgraymaxgray[i] + ""; color[i] = Color.GREEN; } //灰度极坐标的直方图,X轴是极坐标,Y轴是对应灰度密集区最大值的灰度值 BufferedImage image2 = planeHistogram.paintPlaneHistogram("灰度极坐标直方图", countgraymaxratio, text, color); File output2 = new File("222.jpg"); try { ImageIO.write(image2, "jpg", output2); } catch (IOException e) { e.printStackTrace(); } }
相关文章推荐
- NRPE: Unable to read output
- 解决UMEditor与bootstrap不兼容导致图片不能正常拖拽缩放的问题
- 15. 3Sum
- 淘宝的一些性能监控工具试用
- ecshop二次开发之广告定时投放
- vdom实现
- iOS Crash文件的解析(一)
- Python StringIO与cStringIO
- OC中浮点数转整数的进一法和去尾法
- nodejs中mysql用法
- 单例 (JAVA)
- MySQL 5.6 解决InnoDB: Error: Table "mysql"."innodb_table_stats" not found.问题
- Java学习笔记之对象交互
- VENDORNPC.LUA --随身商人
- Fisher线性判别
- vs2010 MFC 释放资源
- Spring 开启Annotation <context:annotation-config> 和 <context:component-scan>诠释及区别
- 关于alwayson 数据库用户同步 权限问题
- elasticsearch java api的基本使用
- .net 一个集合list 不包含另一个集合listb中的数据