ZBLOG

QImage灰度图转JET伪彩色

在 Qt 中,如果要将灰度图转换为 JET 伪彩色,可以使用一种颜色映射,将灰度值按照一定的规则映射到不同的 RGB 颜色。JET 伪彩色通常会从蓝色到红色过渡,并在中间通过青色和黄色。

以下是一个示例代码,展示如何实现这一过程:

#include <QImage>
#include <QColor>

QImage convertToJetPseudoColor(const QImage &grayImage) {
    // 确保输入图像是灰度图
    if (grayImage.format() != QImage::Format_Grayscale8) {
        qWarning("Input image is not a grayscale image.");
        return QImage();
    }

    int width = grayImage.width();
    int height = grayImage.height();
    QImage jetColorImage(width, height, QImage::Format_RGB32);

    for (int y = 0; y < height; ++y) {
        for (int x = 0; x < width; ++x) {
            // 获取当前像素的灰度值
            uchar grayValue = qGray(grayImage.pixel(x, y));

            // 将灰度值映射到 JET 伪彩色
            QColor color;
            float ratio = grayValue / 255.0;

            if (ratio < 0.25) { // 蓝色区间
                color.setRgb(0, 0, static_cast<int>(255 * (1 - ratio * 4)));
            } else if (ratio < 0.5) { // 青色区间
                color.setRgb(0, static_cast<int>(255 * ((ratio - 0.25) * 4)), 255);
            } else if (ratio < 0.75) { // 黄色区间
                color.setRgb(static_cast<int>(255 * ((ratio - 0.5) * 4)), 255, static_cast<int>(255 * (1 - (ratio - 0.5) * 4)));
            } else { // 红色区间
                color.setRgb(255, static_cast<int>(255 * (1 - (ratio - 0.75) * 4)), 0);
            }

            jetColorImage.setPixel(x, y, color.rgb());
        }
    }

    return jetColorImage;
}

示例说明:

  1. 检查格式:确保输入的 QImageQImage::Format_Grayscale8 类型。
  2. 创建目标图像:生成一个与原始图像同样大小的新 QImage 对象,用于存储结果。
  3. 循环遍历每个像素:使用双层循环遍历每个像素的位置。
  4. 获取和映射颜色
    • 使用 qGray() 函数获取当前像素的灰度值,并计算出比例(从 01)。
    • 根据该比例,将其分为四个部分,每一部分对应一个颜色范围,分别为蓝、青、黄和红。
  5. 设置目标像素的颜色:用新计算出的 RGB 值更新伪彩色图片。

使用方法:

你可以在 Qt 的主窗口中加载一张灰度图,然后调用 convertToJetPseudoColor 函数并显示结果。例如:

QImage grayImg("path/to/your/grayscale/image.png");
QImage jetColoredImg = convertToJetPseudoColor(grayImg);
jetColoredImg.save("path/to/save/jet_color_image.png");

这样就能将给定的灰度图片转换成 JET 风格的伪彩色图片并保存。根据需要,你可以调整上述代码中的阈值,以改变颜色映射策略。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=19727

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?