数字图像处理——用Java获取像素点的RGB值

来源:互联网 发布:纸带打孔编程 编辑:程序博客网 时间:2024/05/21 14:52

从前面的文字中就可以看出,对数字图像的处理都是在像素级上操作的,准确地讲是操作像素点的RGB值,在图像取反灰度图像转换两篇中已经涉及到了对RGB操作的相关代码,相信大家已经也看到了,就是这一段:

for (int j = 0; j < height; j++) {    for (int i = 0; i < width; i++) {        int p = image.getRGB(i, j);        int a = (p >> 24) & 0xff;        int r = (p >> 16) & 0xff;        int g = (p >> 8) & 0xff;        int b = p & 0xff;        p = (a << 24) | (r << 16) | (g << 8) | b;        image.setRGB(i, j, p);    }}

其中这里的变量r,g,b就是对应的rgb值,那为什么要这样操作呢?先看一个图:


这里写图片描述

有了这个图相信大家就都看明白了,首先p是一个32位的二进制数,可以通过getRGB()方法得到,那么最前面的8位是alpha,后面依次是Red,Green,Blue。所以这就是代码中移位操作的意义,当然最后还要回归到原来的结构,那就用(a << 24) | (r << 16) | (g << 8) | b再拼装一次。

所以对图像中像素点的操作就可以这么写啦,后面具体是增强还是锐化,都是基于这样的操作做的。

原创粉丝点击