RAW 파일을 처리 할 수있는 경우 RGRGRG 및 GBGBGB 행 (또는 RGBGRGBG 행)으로 구성된 베이어 픽셀 배열을 갖게됩니다. 모든 R 및 B 픽셀을 무시하고 G 픽셀을 합산하고 제곱근 ( (빨간색 또는 파란색보다 두 배 많은 녹색 픽셀이 있기 때문에) G 픽셀 수의 절반으로 나눕니다. 사진의 "녹색"에 대한 적절한 가중 평균을 제공해야합니다. 그런 다음 빨강과 파랑의 평균을 취하고 세 평균 모두에서 녹색 백분율을 계산할 수 있습니다.
CMOS 센서는 각 빛의 파장에 대해 서로 다른 감도를 갖기 때문에 더 정확하게하기 위해 빨강, 녹색 및 파랑 센서 픽셀에 대한 적절한 가중치를 고려할 수 있습니다. 무게는 일반적으로 센서에 따라 다릅니다. 그것은 간단한 접근법 일 것입니다.
시간, 다양한 인공 조명 등으로 인한 컬러 캐스트를 고려하려면 먼저 Lightroom과 같은 도구에서 각 사진을 사전 처리하여 화이트 밸런스를 먼저 보정 한 다음 표준 RGB 픽셀 이미지에서 계산을 수행하는 것이 더 적절할 수 있습니다. RAW 센서 데이터 처리와 달리 전체 녹색 성분의 평균이 아닌 픽셀 "녹색 순도"를 기준으로 계산에 가중치를 부여하려고합니다. 픽셀이 더 순수한 녹색 일수록 더 적거나 파란 픽셀에 비해 가중치가 높습니다. 처리 전에 화이트 밸런스를 정규화하면 구름 표지, 시간, 계절 등과 같은 빈약 한 요소를 설명하도록 설계된 접선을 사용하여 매우 간단한 계산을 복잡하게 할 필요가 없습니다.
하늘과 같이 비 사고 픽셀의 넓은 영역을 여전히 고려할 수 있습니다. 나는 당신이 무엇을 달성하려고하는지 정확히 알지 못하면 그 지역에서 당신을 많이 도울 수 없습니다. "사진"의 녹색은 "하늘"픽셀을 포함하는 녹색 대 빨강 및 파랑의 비율을 계산하여 가장 잘 제공됩니다.
절차에 관해서는 동일한 카메라 설정으로 동일한 광원 (동일한 강도 및 색 온도)에서 18 % 회색 카드와 같은 공통 기준선에 대해 측정 한 사진을 찍으면 분명히 갈 것입니다. 결과를 정상화하기위한 먼 길. 디지털에서는 RAW 처리 소프트웨어 및 기본 화이트 밸런스 픽커 도구를 사용하여 불일치를 수정할 수 있으므로 RAW로 촬영하십시오.
사진의 "친환경"계산에 대한 통찰력을 제공합니다. 녹색 베이어 픽셀 대 파랑 및 빨강의 가중치를 계산하거나 RGB 픽셀의 빨강 / 파란 순도와 관련하여 녹색 순도를 계산하는 것과 같은 간단한 방법이 있습니다. HSV ( Hue / Saturation / Value (때때로 HSB라고도 함, Value를 Brightness로 대체))와 같은보다 적절한 색 공간으로 변환하고 HUE 공간의 곡선을 사용하여 녹색의 양을 계산 하면 더 많은 운이 생길 수 있습니다 . (참고 : HSL은 다른 유형의 색 공간이므로 사진에서 "녹색"의 양을 계산하는 데 적합하지 않을 수 있으므로 HSV를 사용합니다. 여기 에서이 색 공간에 대해 자세히 알아볼 수 있습니다..) 순수한 녹색 (채도 또는 값에 관계없이)은 120 °의 색조 각도로 떨어지며 빨강 (0 °) 또는 파랑 (240 °)으로 이동할 때 그 위치에서 떨어집니다. 240 °와 360 ° 사이에서는 채도 나 값에 관계없이 픽셀에 0의 녹색이 있습니다.
그림 1. 색조 플롯-색조의 녹색 순도
특정 필요에 맞게 실제 가중치 곡선을 조정할 수 있지만 간단한 곡선은 다음과 유사 할 수 있습니다.
range = 240
period = range * 2 = 240 * 2 = 480
scale = 360/period = 0.75
pureGreen = sin(scale * 120)
의 값은 1.0pureGreen
이어야합니다 . 계산 공식 은 다음과 같이 수행 할 수 있습니다.greenness
sin(scale * hue) } 0 > hue > 240
greenness =
0 } 240 <= hue <= 360 || hue == 0
은 hue
당신의 HSV 색상 값에서 색의 정도입니다. 는 radius
의 절반 period
녹색이 어느 정도 존재하는. scale
하도록 조정됩니다 우리 시대에 죄 곡선, sin(scale * hue)
당신은 순수한 녹색 (즉 그린 강도를 무시)가하는 것과 피크 (수익률 1.0). 양은 greenness
우리 기간의 상반기에만 유효하므로 녹색도 계산은 색조가 0 °보다 크고 240 °보다 작을 때만 유효하며 다른 색조에는 0입니다.
기간, 사용자가 정의한 범위 green
가 존재할 수있는 범위 (예 : 0에서 240이 40 > hue > 200
아니라 대신 제약 조건을 설정할 수 있음)를 조정하여 가중치를 조정할 수 있으며 해당 범위 밖의 범위를 녹색으로 0으로 정의 할 수 있습니다. 이것은 수학적으로 정확하지만 완전히 지각 적으로 정확하지는 않을 수 있습니다. 물론 공식을 조정하여 pure green
더 많은 지점 을 노란색 으로 조정하고 (보다 정확한 결과를 생성 할 수 있음) 곡선의 진폭을 고원으로 높이고 순수한 녹색의 대역을 단일 범위가 아닌 색조 범위로 확장 할 수 있습니다 색조 값 등. 전체 인간의 지각 정확도를 위해 CIE XYZ 및 CIE L a b * 에서 처리되는보다 복잡한 알고리즘공간이 필요할 수 있습니다. (참고 : XYZ 및 랩 공간에서의 작업 복잡성은 여기에 설명 된 것보다 크게 증가합니다.)
사진의 녹색을 계산하려면 각 픽셀의 녹색을 계산 한 다음 평균을 생성 할 수 있습니다. 그런 다음 거기에서 알고리즘을 가져와 특정 요구에 맞게 조정할 수 있습니다.
RGB에서 HSV와 같은 EasyRGB 에서 색상 변환 알고리즘을 찾을 수 있습니다 .
var_R = ( R / 255 ) // Red percentage
var_G = ( G / 255 ) // Green percentage
var_B = ( B / 255 ) // Blue percentage
var_Min = min( var_R, var_G, var_B ) //Min. value of RGB
var_Max = max( var_R, var_G, var_B ) //Max. value of RGB
del_Max = var_Max - var_Min //Delta RGB value
V = var_Max //Value (or Brightness)
if ( del_Max == 0 ) //This is a gray, no chroma...
{
H = 0 //Hue (0 - 1.0 means 0° - 360°)
S = 0 //Saturation
}
else //Chromatic data...
{
S = del_Max / var_Max
del_R = ( ( ( var_Max - var_R ) / 6 ) + ( del_Max / 2 ) ) / del_Max
del_G = ( ( ( var_Max - var_G ) / 6 ) + ( del_Max / 2 ) ) / del_Max
del_B = ( ( ( var_Max - var_B ) / 6 ) + ( del_Max / 2 ) ) / del_Max
if ( var_R == var_Max ) H = del_B - del_G
else if ( var_G == var_Max ) H = ( 1 / 3 ) + del_R - del_B
else if ( var_B == var_Max ) H = ( 2 / 3 ) + del_G - del_R
if ( H < 0 ) H += 1
if ( H > 1 ) H -= 1
}