, примените CCM, а затем повторно примените гамма-коррекцию с
я есть 24-цветная цветовая карта, и я пытаюсь оценить матрицу цветовой коррекции для снятых изображений с помощью указанной цветовой карты. Я вручную оценилCCM
с помощьюleast squares
метод, и он не дает желаемых результатов. Некоторые изображения приобретают странный оттенок после нанесенияCCM
.
Я дважды проверил свой код, но не смог найти никаких глюков. Я ищу любые opencv / matlab или любые реализации с открытым исходным кодом, где я могу предоставить захваченные значения цвета и фактические значения цвета, и он может рассчитать и применить CCM для меня, чтобы убедиться, что у моей реализации есть проблемы или меньше всего Метод квадратов не очень эффективен.
Примечание: я не применяю линеаризацию к изображению перед применением CCM. Пожалуйста, предложите любые ресурсы, где это можно быстро проверить.
PS: Ниже приведен код MATLAB, который я использую для оценки и применения матрицы коррекции цвета (CCM).
% calc 3x3 correction matrix
ccm = MactAll * MrawAll' * inv(MrawAll * MrawAll') % MactAll is the 3x24 matirx of actual color card values and MrawAll is the 3x24 matrix of captured color card values
вот как я применяю СКК к изображению
[my, mx, mc] = size(imageRGB); % rows, columns, colors (3) %
imageRGB = reshape(imageRGB,my*mx,mc);
correctedRGB = imageRGB*ccm;
correctedRGB = min(correctedRGB,1); correctedRGB = max(correctedRGB,0); % Place limits on output.
correctedRGB = reshape(correctedRGB, my, mx, mc);
correctedRGB = uint8(correctedRGB*255);
Вот мои результаты:
Исправленное изображение