색 변환 매트릭스 창고

색상 변환 매트릭스 또는 색상 매트릭스(Color Matrix)의 클라우드 세트입니다.

색상 변환 매트릭스란 무엇입니까?


행렬과 RGB 값을 곱하여 계산하면 색상 변환이 가능합니다.그렇게 편한 팀은하나의 행렬이기 때문에 색 공간에 대해 선형 변환이라면 무엇이든 처리할 수 있습니다.
행렬의 형상은 여러 가지가 있는데 간단한 것은 다음과 같은 4x3 행렬이다.(밝기는 0.0~1.0 범위)
\begin{pmatrix}
R' \\
G' \\
B'
\end{pmatrix}
=
\begin{pmatrix}
m_{11} & m_{21} & m_{31} & m_{41} \\
m_{12} & m_{22} & m_{32} & m_{42} \\
m_{13} & m_{23} & m_{33} & m_{43} \\
\end{pmatrix}
\begin{pmatrix}
R \\
G \\
B \\
1 
\end{pmatrix}
R, G, B는 다음 방정식으로만 계산된다는 것이다.
R' = m_{11} R + m_{21} G + m_{31} B + m_{41} \\
G' = m_{12} R + m_{22} G + m_{32} B + m_{42} \\
B' = m_{13} R + m_{23} G + m_{33} B + m_{43} 
기하학적 변환을 연상하는 모방 행렬의 방정식은 실제 계산 자체가 같기 때문에 비슷한 요령에 따라 프로그래밍을 할 수 있다고 생각합니다.

행렬 크기


게다가 방진은 행렬로서 더욱 편리하기 때문에 아래의 표현을 많이 사용한다.방금 4x3 행렬은 이 생략 형식입니다.
\begin{pmatrix}
R' \\
G' \\
B' \\
1
\end{pmatrix}
=
\begin{pmatrix}
m_{11} & m_{21} & m_{31} & m_{41} \\
m_{12} & m_{22} & m_{32} & m_{42} \\
m_{13} & m_{23} & m_{33} & m_{43} \\
0 & 0 & 0 & 1 \\
\end{pmatrix}
\begin{pmatrix}
R \\
G \\
B \\
1 
\end{pmatrix}
RGBA면 5x5로 추가됩니다.A(alpha)까지 함께 처리한 일은 많지 않지만, 일단 소개부터 하자.
\begin{pmatrix}
R' \\
G' \\
B' \\
A' \\
1
\end{pmatrix}
=
\begin{pmatrix}
m_{11} & m_{21} & m_{31} & m_{41} & m_{51} \\
m_{12} & m_{22} & m_{32} & m_{41} & m_{52} \\
m_{13} & m_{23} & m_{33} & m_{43} & m_{53} \\
m_{14} & m_{24} & m_{34} & m_{44} & m_{54} \\
0 & 0 & 0 & 0 & 1
\end{pmatrix}
\begin{pmatrix}
R \\
G \\
B \\
A \\
1 
\end{pmatrix}

색 변환 매트릭스의 장점

  • 숫자의 나열로 변환을 표시할 수 있다
  • 모든 선형 변환이 가능
  • 통합 처리
  • 기다린다이러한 상세한 내용은 뒤에 서술할 것이다.
    선형변환의 구체적인 예를 보지 않으면 장점을 이해하기 어려우므로 구체적인 예부터 소개한다.

    구체적 예


    무변화


    우선 R, G, B 값이 변하지 않는 행렬을 기본 형식으로 소개한다.
    \begin{pmatrix}
    1 & 0 & 0 & 0 \\
    0 & 1 & 0 & 0 \\
    0 & 0 & 1 & 0
    \end{pmatrix}
    
    실제 계산하면 다음과 같이 되기 때문에 변화가 없을 것이 분명하다.
    R' = 1 R + 0 G + 0 B + 0 = R \\
    G' = 0 R + 1 G + 0 B + 0 = G \\
    B' = 0 R + 0 G + 1 B + 0 = B
    
    또한 단위 행렬(identity matrix)의 형상은 다음과 같다.
    \begin{pmatrix}
    1 & 0 & 0 & 0 \\
    0 & 1 & 0 & 0 \\
    0 & 0 & 1 & 0 \\
    0 & 0 & 0 & 1
    \end{pmatrix}
    

    특정 색상 강조


    이것은 덧셈과 곱셈을 통해 빨간색을 증가시킨 예다.

    적색 덧셈

    \begin{pmatrix}
    1 & 0 & 0 & 0.4 \\
    0 & 1 & 0 & 0 \\
    0 & 0 & 1 & 0
    \end{pmatrix}
    \\
    R' = 1 R + 0 G + 0 B + 0.4 = R + 0.4 \\
    G' = 0 R + 1 G + 0 B + 0 = G \\
    B' = 0 R + 0 G + 1 B + 0 = B
    
    원본 이미지
    R + 0.4


    빨간색을 0.4 높여라.부피가 커서 모두 빨개졌다.

    적색 곱셈

    \begin{pmatrix}
    1.4 & 0 & 0 & 0 \\
    0 & 1 & 0 & 0 \\
    0 & 0 & 1 & 0
    \end{pmatrix}
    \\
    R' = 1.4 R + 0 G + 0 B + 0 = 1.4 R \\
    G' = 0 R + 1 G + 0 B + 0 = G \\
    B' = 0 R + 0 G + 1 B + 0 = B
    
    원본 이미지
    R x 1.4


    빨간색만 1.4배.이쪽의 검은색은 아직 검은색이 남아 있어서 자연히 빨간색을 띠게 될 것이다.추천합니다.

    명암비 향상

    \begin{pmatrix}
    1.5 & 0 & 0 & 0 \\
    0 & 1.5 & 0 & 0 \\
    0 & 0 & 1.5 & 0
    \end{pmatrix}
    \\
    R' = 1.5 R + 0 G + 0 B + 0 = 1.5 R \\
    G' = 0 R + 1.5 G + 0 B + 0 = 1.5 G \\
    B' = 0 R + 0 G + 1.5 B + 0 = 1.5 B
    
    원본 이미지
    RGB x 1.5


    밝기가 1.5배 증가한다.어두운 이미지의 가시성을 대폭 높이다.

    그레이스케일링

    \begin{pmatrix}
    0.2126 & 0.7152 & 0.0722 & 0 \\
    0.2126 & 0.7152 & 0.0722 & 0 \\
    0.2126 & 0.7152 & 0.0722 & 0
    \end{pmatrix}
    \\
    R' = 0.2126 R + 0.7152 G + 0.0722 B \\
    G' = 0.2126 R + 0.7152 G + 0.0722 B \\
    B' = 0.2126 R + 0.7152 G + 0.0722 B \\
    
    원본 이미지
    grayscale


    R, G, B 세 값은 모두 같습니다.가중 평균 계수 {0.226,0.7152,0.0722} BT.709 참조.아마도 BT.601은 비교적 유명할 것이다.

    R, G, B 교체

    \begin{pmatrix}
    0 & 0 & 1 & 0 \\
    0 & 1 & 0 & 0 \\
    1 & 0 & 0 & 0
    \end{pmatrix}
    \\
    R' = 0 R + 0 G + 1 B + 0 = B \\
    G' = 0 R + 1 G + 0 B + 0 = G \\
    B' = 1 R + 0 G + 0 B + 0 = R
    
    원본 이미지
    BGR


    R(빨간색) 및 B(파란색)를 대체합니다.OpenCV에서 실수로 자주 오류가 발생할 때 표시되는 이미지입니다.

    플러스 마이너스 반전

    \begin{pmatrix}
    -1 & 0 & 0 & 1 \\
    0 & -1 & 0 & 1 \\
    0 & 0 & -1 & 1
    \end{pmatrix}
    \\
    R' = -1 R + 0 G + 0 B + 1 = 1 - R \\
    G' =  0 R - 1 G + 0 B + 1 = 1 - G \\
    B' =  0 R + 0 G - 1 B + 1 = 1 - B
    
    원본 이미지
    negate


    밝기를 반전하다.이것은 그림 처리에서 보기 드문 실수로 오류가 발생했을 때 보이는 그림입니다.소화시대의 여러분이라면, 아마도 아날로그 카메라의 필름으로 보기에 익숙한 이미지일 것이다.

    색 변환 매트릭스의 장점


    숫자의 나열로 변환을 표시할 수 있다


    4x3 행렬의 12개의 수치만으로도 각종 이미지 변환을 나타낼 수 있다.
    예를 들어 빨간색 강조(1.4R)는 {1.4, 0, 0, 0, 1, 0, 0, 0, 1, 0이 될 수 있다.
    프로그래밍에 편리한 점이 많다.

    선형 변환이라면 무엇이든지 다 된다


    역으로 말하면 선형 전환만 할 수 있다.(정확히 의선형이다. 가산이 증가하면 원점이 편이되어 선형이라고 할 수 없다.)
    어떤 전환을 할 수 있는지, 어떤 전환을 할 수 있는지는 불가능하다. 간단하고 쉽게 알 수 있는 것은 프로그램 설계뿐만 아니라 서비스 방법을 고려하는 데도 좋은 점이 많다.
    예를 들어 감마 교정과 같은 비선형 처리는 안 되고 max/min을 포함하는 조작도 불가능하니 필요하면 따로 제작하세요.

    통일적으로 처리할 수 있다.


    행렬의 곱셈이기 때문에 여러 변환 행렬을 적용하려면 곱셈으로 한 행렬로 합치면 여러 변환을 동시에 할 수 있다.
    예를 들어 대비도가 높아진 상태에서 빨간색을 강조한 상태에서 순서대로 처리하려면
    \begin{pmatrix}
    R' \\
    G' \\
    B'
    \end{pmatrix}
    =
    \begin{pmatrix}
    1.5 & 0 & 0 & 0 \\
    0 & 1.5 & 0 & 0 \\
    0 & 0 & 1.5 & 0
    \end{pmatrix}
    \begin{pmatrix}
    R \\
    G \\
    B
    \end{pmatrix}
    
    \begin{pmatrix}
    R'' \\
    G'' \\
    B''
    \end{pmatrix}
    =
    \begin{pmatrix}
    1.4 & 0 & 0 & 0 \\
    0 & 1 & 0 & 0 \\
    0 & 0 & 1 & 0
    \end{pmatrix}
    \begin{pmatrix}
    R' \\
    G' \\
    B'
    \end{pmatrix}
    
    이렇게 하면 아래의 그림을 만들 수 있다.
    원본 이미지(RGB)
    RGB x 1.5 (R'G'B')
    R x 1.4 (R''G''B'')



    이 의식은 총괄적으로 보면 이렇다.
    \begin{pmatrix}
    R'' \\
    G'' \\
    B''
    \end{pmatrix}
    =
    \begin{pmatrix}
    1.4 & 0 & 0 & 0 \\
    0 & 1 & 0 & 0 \\
    0 & 0 & 1 & 0
    \end{pmatrix}
    \begin{pmatrix}
    1.5 & 0 & 0 & 0 \\
    0 & 1.5 & 0 & 0 \\
    0 & 0 & 1.5 & 0
    \end{pmatrix}
    \begin{pmatrix}
    R \\
    G \\
    B
    \end{pmatrix}
    
    이 설정을 사각형 행렬로 설정하면 다음과 같습니다.
    \begin{pmatrix}
    R'' \\
    G'' \\
    B'' \\
    1
    \end{pmatrix}
    =
    \begin{pmatrix}
    1.4 & 0 & 0 & 0 \\
    0 & 1 & 0 & 0 \\
    0 & 0 & 1 & 0 \\
    0 & 0 & 0 & 1
    \end{pmatrix}
    \begin{pmatrix}
    1.5 & 0 & 0 & 0 \\
    0 & 1.5 & 0 & 0 \\
    0 & 0 & 1.5 & 0 \\
    0 & 0 & 0 & 1
    \end{pmatrix}
    \begin{pmatrix}
    R \\
    G \\
    B \\
    1
    \end{pmatrix}
    
    사이의 두 색 행렬은 곱셈으로 그것을 하나로 합칠 수 있다.
    \begin{pmatrix}
    1.4 & 0 & 0 & 0 \\
    0 & 1 & 0 & 0 \\
    0 & 0 & 1 & 0 \\
    0 & 0 & 0 & 1
    \end{pmatrix}
    \begin{pmatrix}
    1.5 & 0 & 0 & 0 \\
    0 & 1.5 & 0 & 0 \\
    0 & 0 & 1.5 & 0\\
    0 & 0 & 0 & 1
    \end{pmatrix}
    =
    \begin{pmatrix}
    2.1 & 0 & 0 & 0 \\
    0 & 1.5 & 0 & 0 \\
    0 & 0 & 1.5 & 0 \\
    0 & 0 & 0 & 1
    \end{pmatrix}
    
    한 번에 여러 개의 변환을 해도 결과는 같은 이미지를 얻을 수 있습니다.
    \begin{pmatrix}
    R'' \\
    G'' \\
    B''
    \end{pmatrix}
    =
    \begin{pmatrix}
    2.1 & 0 & 0 & 0 \\
    0 & 1.5 & 0 & 0 \\
    0 & 0 & 1.5 & 0
    \end{pmatrix}
    \begin{pmatrix}
    R \\
    G \\
    B
    \end{pmatrix}
    
    이 예는 두 가지가 있는데 설령 이것이 3, 4개, 심지어 100개로 증가하더라도 한 번의 처리로 요약할 수 있다.
    또한 각각 처리하면 각 처리에서 소수점을 제거하거나 0255에서clamp를 제거하여 중도 이미지 악화의 좋지 않은 영향을 피할 수 있다.

    최후


    아래의 URL로 대체적으로 시도할 수 있기 때문에 대표적인 선형 변환을 시도해 보십시오.
  • https://app.awm.jp/image.js/colormat.html
  • ImageMagick으로 색 행렬을 처리하는 방법을 요약합니다.
  • ImageMagick에서 -color-matrix 사용
  • https://qiita.com/yoya/items/dbd9e201205afb3e3a38
  • 좋은 웹페이지 즐겨찾기