2013-04-05 34 views
5

Phương pháp "tô màu" thẳng là hình ảnh thang độ xám là gì. Bằng cách tô màu, ý tôi là chuyển các giá trị cường độ xám sang một trong ba kênh R, G, B trong một hình ảnh mới.OpenCV: Phương pháp tô màu cho hình ảnh thang độ xám

Ví dụ một điểm ảnh 8UC1 màu xám với cường độ của I = 50 nên trở thành một điểm ảnh màu 8UC3 cường độ BGR = (50, 0, 0) khi hình ảnh được colorized để "xanh".

Trong Matlab ví dụ, những gì tôi yêu cầu cho có thể chỉ cần tạo ra với hai dòng mã:

color_im = zeros([size(gray_im) 3], class(gray_im)); 
color_im(:, :, 3) = gray_im; 

Nhưng đáng ngạc nhiên tôi không thể tìm thấy bất cứ điều gì tương tự như trong OpenCV.

Trả lời

4

Vâng, điều tương tự đòi hỏi phải làm việc nhiều hơn một chút trong C++ và OpenCV:

// Load a single-channel grayscale image 
cv::Mat gray = cv::imread("filename.ext", CV_LOAD_IMAGE_GRAYSCALE); 

// Create an empty matrix of the same size (for the two empty channels) 
cv::Mat empty = cv::Mat::zeros(gray.size(), CV_8UC1); 

// Create a vector containing the channels of the new colored image 
std::vector<cv::Mat> channels; 

channels.push_back(gray); // 1st channel 
channels.push_back(empty); // 2nd channel 
channels.push_back(empty); // 3rd channel 

// Construct a new 3-channel image of the same size and depth 
cv::Mat color; 
cv::merge(channels, color); 

hoặc như là một chức năng (đầm):

cv::Mat colorize(cv::Mat gray, unsigned int channel = 0) 
{ 
    CV_Assert(gray.channels() == 1 && channel <= 2); 

    cv::Mat empty = cv::Mat::zeros(gray.size(), gray.depth()); 
    std::vector<cv::Mat> channels(3, empty); 
    channels.at(channel) = gray; 

    cv::Mat color; 
    cv::merge(channels, color); 
    return color; 
} 
+0

Thật thú vị rằng ngay sau khi tôi hỏi câu hỏi này, tôi phát hiện ra về 'cv :: merge() 'chức năng và' vector' của' cv :: Mat 'và đã làm chính xác điều tương tự bạn đã làm ở đây. Cảm ơn. – Bee

3

special function to do this-applyColorMap trong OpenCV từ v2.4.5 trong contrib mô-đun. Có bản đồ màu sắc khác nhau có sẵn:

Color maps

+2

Tôi không thấy làm thế nào điều này được cho là để giúp đạt được sản lượng mong muốn? Rõ ràng, người ta không thể xác định bản đồ màu tùy chỉnh. – Niko

+0

Tôi xin lỗi. Tôi đã sai. – brotherofken

Các vấn đề liên quan