首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >图像传感器线性矩阵系数(颜色再现),它们是如何应用的?

图像传感器线性矩阵系数(颜色再现),它们是如何应用的?
EN

Stack Overflow用户
提问于 2020-09-10 10:24:10
回答 2查看 105关注 0票数 0

我有一些原始图像去拜尔,然后应用颜色校正/转换。我使用OpenCV和C++,对于使用的图像传感器,线性矩阵系数是:

1.32 -0.46 0.14

-0.36 1.25 0.11

0.08 -1.96 1.88

我不确定如何将这些应用于图像。我不清楚我应该用它们做什么以及为什么。

谁能解释一下这些颜色再现或颜色矩阵的值是什么,以及如何使用它们来处理图像?

谢谢!

EN

回答 2

Stack Overflow用户

发布于 2020-09-10 13:10:06

你的问题不清楚,因为你似乎也不知道该怎么做。

“我应该怎么处理它们”

我想到的第一件事是,可以使用filter2D将图像与该矩阵进行卷积。根据文档filter2D

将图像与内核进行卷积。

该函数对图像应用任意线性滤镜。支持就地操作。

下面是示例代码片段hpw tp use it:

代码语言:javascript
复制
Mat output;
Mat kernelMatrix = (Mat_<double>(3, 3) << 1.32, -0.46, 0.14,
                         -0.36, 1.25, 0.11,
                         0.08, -1.96, 1.88);
filter2D(rawImage, output, -1, kernelMatrix);
票数 0
EN

Stack Overflow用户

发布于 2020-09-11 00:11:47

在去白层之前,你有一个由MxN过滤的“灰度”值组成的数组B (-ayer)。它们被物理过滤,因为每个传感器位置顶部的滤色器会影响每个传感器测量到的光子数量。

在脱层之后,您有一个由MxNx3 BGR值组成的数组C (-olor),该数组是通过(本质上)对B数组进行重新索引获得的。然而,在(行,列)图像位置的3个值中的每一个代表3个物理测量。也就是说,需要将物理值映射到颜色空间。

您拥有的3x3“颜色校正”矩阵表示一种可能的映射--简单的线性映射。您需要依次将其应用于所有(行,列)像素位置的每个BGR三元组。例如(在python/numpy/cv2中):

代码语言:javascript
复制
import numpy as np

def colorCorrect(img, M):
  """Applies a color correction M to a BGR image img"""
  rows, cols, depth = img.shape
  assert depth == 3
  assert M.shape == (3, 3)
  img_corr = np.zeros((rows, cols, 3), dtype=img.dtype)
  for r in range(rows):
    for c in range(cols):
      img_corr[r, c, :] = M.dot(img[r, c, :])
  return img_corr
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63821950

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档