美文网首页
006 LUT的作用与用法

006 LUT的作用与用法

作者: 几时见得清梦 | 来源:发表于2019-07-26 23:10 被阅读0次
    • 本节内容:LUT(查找表,Look Up Table)
      • LUT的作用:避免对每个像素都进行一次计算。预先计算每个像素值的对应的匹配值,然后直接对原图中的像素值在LUT中进行查找,即可快速得到匹配值,减少大量不必要的计算。
      • LUT不单单用于图像中。在数据处理中,只要知道原始数据范围、变换公式、变换后得到的数据,也可以使用LUT加快速度。
      • LUT实际用途:将一个颜色空间的图匹配到另一个颜色空间;将某个对比度的图匹配到另一对比度;图像增强、产生伪彩色等;
    使用LUT改变图像对比度
    • 上图中每个格子代表一个像素,左图有30和40两种像素值,经过LUT之后,40匹配到90,30匹配到10。这样就得到了高对比度图像。
    LUT实验结果
    • 将一张灰度图像经过mapping变成一张彩色图像。
    1. OpenCV的applyColorMap函数内置了十几种伪彩色替换的LUT。


      applyColorMap内置的LUT

    C++

    #include <opencv2/opencv.hpp>
    #include <iostream>
    
    using namespace cv;
    using namespace std;
    void customColorMap(Mat &image);
    int main(int argc, const char *argv[])
    {
        Mat src = imread("D:/vcprojects/images/cos.jpg");
        if (src.empty())
        {
            printf("could not load image...\n");
            return -1;
        }
        Mat gray, dst;
        // 使用LUT
        applyColorMap(src, dst, COLORMAP_SUMMER); //applyColorMap是OpenCV内置API,内置了十几种查找表,需要三个参数(输入图,输出图,查找表)
        // 显示结果
        imshow("colorMap", dst);
    
        cvtColor(src, gray, COLOR_BGR2GRAY);
        imshow("gray", gray);
        customColorMap(gray);
    
        waitKey(0);
        return 0;
    }
    
    
    void customColorMap(Mat &image) { //自定义查找表变换函数,将灰度图变为二值图
        int lut[256];
        for (int i = 0; i < 256; i++) {
            if (i < 127)
                lut[i] = 0;
            else
                lut[i] = 255;
        }
    
        int h = image.rows;
        int w = image.cols;
        for (int row = 0; row < h; row++) {
            for (int col = 0; col < w; col++) {
                int pv = image.at<uchar>(row, col);
                image.at<uchar>(row, col) = lut[pv];
            }
        }
        imshow("lut demo", image);
    }
    

    Python

    import cv2 as cv
    
    src = cv.imread("D:/vcprojects/images/test.png")
    cv.namedWindow("input", cv.WINDOW_AUTOSIZE)
    cv.imshow("input", src)
    dst = cv.applyColorMap(src, cv.COLORMAP_COOL)
    cv.imshow("output", dst)
    
    # 伪色彩
    image = cv.imread("D:/gloomyfish/canjian.jpg")
    color_image = cv.applyColorMap(image, cv.COLORMAP_JET)
    cv.imshow("image", image)
    cv.imshow("color_image", color_image)
    cv.waitKey(0)
    cv.destroyAllWindows()
    

    相关文章

      网友评论

          本文标题:006 LUT的作用与用法

          本文链接:https://www.haomeiwen.com/subject/zitcrctx.html