S0.5 伪彩色与假彩色

版权声明:看不懂请评论,我会积极改进的 https://blog.csdn.net/qq_36285879/article/details/82875347

伪彩色

定义

伪彩色就是把灰度图转化为彩色图,但不能像机器学习那样生成和真实事件类似的图像。

与伪彩色相应的是真彩色。

人类视觉有一个特点就是,仅仅能分辨出二十几种灰度,也就是说采集到的灰度图像分辨率超级高。有一千个灰度级,但非常遗憾。人们仅仅能看出二十几个,也就是说信息损失了五十倍,但人类视觉对彩色的分辨能力相当强,可以分辨出几千种色度。 所以伪彩色应运而生。

应用

  • 医学图像
  • 遥感图像

医学和遥感图像由于其采样设备的原因,往往只能得到灰度图,这时可以考虑伪采样。

方法

1. HSV映射

我们通过调整HSV调色板可以知道,当我们把S,V的值设置为最大,通过改变H单个值可以得到大部分颜色。于是我们可以很轻松的把灰度值映射到H值就可以做到伪彩色。
在这里插入图片描述

hsv的取值范围为
H= 0-360
S= 0-1
V= 0-1

但是为了匹配目标数据类型 OpenCV 将每个通道的取值范围都做了修改,于是就变成了 0-180, 0-255, 0-255。

#include <opencv2/opencv.hpp>
#include <iostream>
#include <cstdio>

using namespace std;
using namespace cv;

int main()
{
    Mat src;

    src = imread("images/favorite/Lena.jpg",0);

    imshow("src0", src);

    cvtColor(src, src, CV_GRAY2RGB);
    cvtColor(src, src, CV_RGB2HSV);

    for(int i = 0; i < src.rows; i++)
    {
        for(int j = 0; j < src.cols; j++)
        {
            int temp = src.at<Vec3b>(i, j)[2];
            src.at<Vec3b>(i, j)[0] = temp*180/255;
            src.at<Vec3b>(i, j)[1] = 255;
            src.at<Vec3b>(i, j)[2] = 255;
        }

    }

    cout << src;
    cvtColor(src, src, CV_HSV2BGR);
    imshow("src", src);

    waitKey(0);
    return 0;
}

在这里插入图片描述

假彩色

定义

假彩色是一种彩色图映射到另一个彩色图,以增强对比度产生的彩色。

应用

  • 遥感图像
  • 大数据可视化

猜你喜欢

转载自blog.csdn.net/qq_36285879/article/details/82875347