SWT中如何得到图像某个位置的像素值和相应的RGB的值
方法一:
通过PaletteData中的三个mask来得到RGB,这里是逐行得到的像素值
这种方式是最严谨的方式,对于非索引图像来说
ImageData ideaImageData = img.getImageData(); 
// The pixel data of the image.
byte[] pixelData = ideaImageData.data;
int redMask = ideaImageData.palette.redMask;
int blueMask = ideaImageData.palette.blueMask;
int greenMask = ideaImageData.palette.greenMask;
int h = 0;
int pixelValue =0;
int[] lineData = new int[ideaImageData.width];
for (int y = 0; y < ideaImageData.height; y++) {
    // 首先是得到每行的像素值,保存到int数组lineData中
    ideaImageData.getPixels(0, y, ideaImageData.width, lineData, 0);
    for (int x = 0; x < lineData.length; x++) {
        //得到像素值
        pixelValue = lineData[x];
        //根据像素值得到RGB的值
        int r = pixelValue & redMask;
        int g = (pixelValue & greenMask) >> 8;
        int b = (pixelValue & blueMask) >> 16;    
       //根据RGB的值得到亮度(或者intensity)
        double temp = (double) (0.3 * r + 0.59 * g + 0.11 * b);
        h = (int) (temp) + ((temp - (int) (temp)) > 0.5 ? 1 : 0);
        h = h < 0 ? 0 : h;
        h = h > 255 ? 255 : h;
        histArray[h]++;
    }
}
 
方法二:
这里是直接得到的,通过偏移量offset从ImageData的data中得到像素值,bingdedaoRGB分量以及Brightness
ImageData ida = img.getImageData(); 
byte[] data2 = new byte[ida.data.length];
int offset = 0;
int k = 0;
int r, g, b, gray;
for (int i = 0; i < ida.height; i++) {
    for (int j = 0; j < ida.width; j++) {
        k = offset + j * 3;
        b = ida.data[k] & 0xff;
        g = ida.data[k + 1] & 0xff;
        r = ida.data[k + 2] & 0xff;
        gray = (int) (0.11 * b + 0.59 * g + 0.3 * r);
        data2[k] = data2[k + 1] = data2[k + 2] = (byte) gray;
    }
    offset += ida.bytesPerLine;
}
ImageData ida2 = new ImageData(ida.width, ida.height, ida.depth, ida.palette, ida.scanlinePad, data2);
imgdst = new Image(img.getDevice(), ida2);
方式三:
根据颜色值得到亮度值,也包含了通过像素值得到RGB分量,并得到Brightness
/** 
 * 根据颜色值(实际上是像素值)得到亮度 
 */
public static int getBrightness(int color) {
    int r = (color & 0x00ff0000) >> 16;
    int g = (color & 0x0000ff00) >> 8;
    int b = (color & 0x000000ff);
    int y = Math.round(0.3f * r + 0.59f * g + 0.11f * b);
    y = y < 0 ? 0 : y;
    y = y > 255 ? 255 : y;
    return y;
}
通过 Wiz 发布

我的SWT与数字图像处理总结(3)—SWT如何得到图像某个位置的像素值和相应的RGB的值...相关推荐

  1. 【数字图像处理】七.MFC图像增强之图像普通平滑、高斯平滑、Laplacian、Sobel、Prewitt锐化详解

    本文主要讲述基于VC++6.0 MFC图像处理的应用知识,主要结合自己大三所学课程<数字图像处理>及课件进行讲解,主要通过MFC单文档视图实现显示BMP图像增强处理,包括图像普通平滑.高斯 ...

  2. 数字图像处理与Python实现笔记之图像特征提取

    数字图像处理与Python实现笔记 摘要 绪论 1 数字图像处理基础知识 2 彩色图像处理初步 3 空间滤波 4 频域滤波 5 图像特征提取 5.1 图像颜色特征提取 5.1.1 颜色直方图 1 一般 ...

  3. 数字图像处理与Python实现笔记之图像小波变换与多分辨率

    数字图像处理与Python实现笔记 摘要 绪论 1 数字图像处理基础知识 2 彩色图像处理初步 3 空间滤波 4 频域滤波 5 图像特征提取 6 图像压缩 7 图像小波变换与多分辨率 7.1 从傅里叶 ...

  4. 【数字图像处理3 】(上)图像超分辨率重建(SR)概述

    图像超分辨率重建 一.前言(废话时间) 二.扫盲知识 什么是 超分辨率重建? 兴起原因 三.传统超分辨率重建 1.基于插值的超分辨率重建 2.基于退化模型的超分辨率重建 3.基于学习的超分辨率重建 四 ...

  5. 数字图像处理第五章——几何变换与图像配准

    数字图像处理第五章 数字图像处理---几何变换与图像配准 (一)点变换 (二)仿射变换 (三)投影变换 (四)应用于图像的几何变换 (五)MATLAB 中的图像坐标系统 5.1 输出图像位置 5.2 ...

  6. 【数字图像处理】实验(3)——图像综合应用:皮肤美化(MATLAB实现)

    图像综合应用:皮肤美化 一.实验目的 二.实验原理 三.实验步骤(包括分析.代码和波形) 1.滤波.色彩空间.代数运算.锐化等技术实现美化 2.加入皮肤的亮白处理 (1)主程序 (2)图像平滑 (3) ...

  7. 数字图像处理(五)——Matlab实现图像的边缘锐化及各种算子的比较

    实验内容 基于单方向梯度算子,Robert算子,Sobel算子,Priwiff算子,Laplacian算子,多方向模板,LOG算子编写matlab增强程序 最后,显示边缘图像和锐化增强图像,并对这些仿 ...

  8. 数字图像处理基础(matlab)Ⅰ:图像读取,显示等

    文章目录 前言 一.实验目的 二.实现原理 三.算法设计 3.1利用imread( )函数读取图像 3.2 分别显示图像的红.绿和蓝色分量的强度 3.3 将图像转换为灰度图,显示灰度结果图像进行对比 ...

  9. 第5章 Python 数字图像处理(DIP) - 图像复原与重建13 - 空间滤波 - 线性位置不变退化 - 退化函数估计、运动模糊函数

    标题 线性位置不变退化 估计退化函数 采用观察法估计退化函数 采用试验法估计退化函数 采用建模法估计退化函数 运动模糊函数 OpenCV Motion Blur 在这一节中,得到的结果,有些不是很好, ...

最新文章

  1. 8Manage:如何变革性的加强企业采购管理?
  2. oracle io lost,磁盘IO故障
  3. python 3.9 发布计划_Python 3.9.0 beta4 发布
  4. 前端学习(2553):内容概述
  5. 日语学习-多邻国-关卡1-时间2
  6. 通信原理 —— 绪论
  7. python电影爬取并下载_python爬取电影并下载
  8. asio ssl 笔记
  9. 如何做CRM系统的客户开发?
  10. Java中的BigDecimal比较大于小于等于,四舍五入保留几位(setScale方法详解),加减乘除取余
  11. 逆转ISP,港科大陈启峰团队提出了可逆ISP
  12. Android Studio 实现将视频资源嵌入APP中
  13. 【前端三剑客三】 JavaScript
  14. FILE_DIRNAME
  15. 计算机械功的公式,机械功的计算
  16. discuz mysql 类_Discuz论坛中的的MySQL类解析
  17. Flutter优化加载网络图片及异常捕获
  18. 2022年 linux运维日常工作内容
  19. java cics通讯,哪种方法可以连接大型机和Java? MQ系列/ IBM CICS事务网关中哪个最好?...
  20. 电脑技巧:分享六个有趣好玩的网站,值得收藏

热门文章

  1. JavaScript内存那点事
  2. java 日期时间工具_Java日期时间类工具
  3. 表达式必须具有与对应表达式相同的数据类型_跟光磊学Java开发-运算符和表达式...
  4. 计算机函数left的用法,excel中的left函数怎么使用呢?
  5. w ndows10电脑配置看哪里,win10对电脑配置要求及如何查看电脑配置
  6. oracle view使用次數,oracle sql资源消耗相关视图
  7. Sublime 格式化 JSON
  8. VB 详细枚举指定目录、文件夹文件列表
  9. dll修改和EXCOPE
  10. SCPPO(一):禅道的安装