SLR을 사용하여 사진의 '녹색'을 측정하려면 어떻게해야합니까?


13

배경

내 디지털 사진은 Matlab 또는 R과 같은 컴퓨터 프로그램에서 amxnx 3 매트릭스로 읽을 수 있습니다. 여기서 mxn은 3 개의 (빨강, 녹색 및 파랑) 센서 각각에서 관찰되는 픽셀 수이며, 매트릭스의 각 셀에는 숫자가 있습니다. 1-255에서 센서에 의해 관찰 된 밝기를 반영합니다.

이 정보를 사용하여 사진에서 녹색의 객관적인 측정 값을 얻으려고합니다. 녹색과 식물의 성장을 연관 시키려고합니다 (옥수수의 하루에 한 장의 사진을 상상해보십시오).

이 방향으로의 이전 작업 은 다음과 같이 녹색 지수를 계산하여 약간의 성공을 거두었습니다

  • 녹색 % = 녹색 / (파랑 + 빨강) 또는
  • 녹색 발산 = 2 * 녹색-적색-청색

각각의 mxn 픽셀에 대한 웹캠 이미지로부터, 그러나 개구 또는 입사 방사선 (태양 각도)에 대한 제어는 없었다.

나는 초록의 '절대'척도를 찾고 있지 않다는 점에 유의하십시오. 숫자의 규모와 분포는 중요하지 않습니다. 그냥 초록색의 일관된 상대적인 척도를 제공해야합니다.

질문

SLR을 사용하여 다음 중 일부 또는 전부에 변하지 않는 강력한 녹색도를 얻을 수 있습니까?

  • 구름 덮개?
  • 시간?
  • 일? (이것이 유일한 요구 사항입니다)
  • 백그라운드에서 하늘 / 땅의 비율?

현재 상태

나는 다음과 같은 아이디어를 생각해 냈지만 어떤 것이 필요한지, 어떤 것이 녹색 / (빨간색 + 파란색)의 비율에 영향을 미치지 않을지 잘 모르겠습니다.

  1. 흰색 플라스틱 사진을 찍고이 이미지를 사용하여 다른 값을 정규화합니다.
  2. 조리개 수정
  3. 셔터 속도 수정
  4. 흰 종이를 사용하여 화이트 밸런스를 설정
  5. 같은 각도에서 모든 사진을 찍습니다
  6. 정오에 모든 사진을 찍습니다

1
인공 조명을 고려하면 절차가 더 간단 해집니다. 플래시는 적절하게 작동해야합니다. 플래시가 같은 위치에 있고 전원이 켜져 있는지 확인하십시오.
PearsonArtPhoto

@Pearsonarphoto-흥미로운 아이디어, 낮에는 사진을 찍는 것에 대해 생각하고 있었지만 밤에는 달이없는 사진을 찍는 것이 더 합리적입니다.
David LeBauer

1
Pearsonartphoto의 조언을 따르는 경우 셔터, 조리개 및 ISO를 수동으로 설정하고 셔터를 플래시의 동기화 속도 (일반적으로 1/200 ~ 1/320)로 설정하고 조리개와 ISO를 낮게 설정해야합니다. 플래시 전원을 다 쓰지 않고도 사용할 수 있습니다. 이렇게하면 주변 환경이 최대한 어두워집니다. 보름달은 문제가되지 않습니다 (한낮의 태양, 다른 한편으로는 ...)이 상황에서는 가장 작은 그림자를 드리 우기 때문에 축상 플래시가 가장 좋습니다. .
Evan Krall

2
@Evan 축 플래시에 대해 동의하지 않습니다. 이유는 다음과 같습니다. photo.stackexchange.com/questions/9531/… — 직접 반사가 너무 큽니다. 앞에서 설명한 편광자를 사용하는 경우를 제외하고는 기어가 동일하게 유지되고 화이트 밸런스가 올바르게 수행되는지 확인해야합니다. 편광판은 화이트 밸런스를 바꿉니다.
Simon A. Eugster

2
엽록소는 근적외선에서 가장 밝습니다. yale.edu/ceo/Documentation/rsvegfaq.html 이를 바탕으로 NDVI와 같은 식물 "녹색"에 대한 표준 조치가 있습니다. 따라서 가능하다면 NIR 대역을 기록 할 수있는 카메라를 구입하십시오.
whuber

답변:


12

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 XYZCIE 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
}

1
원시 처리 기술에 +1 dcraw를 소스가 좋은 시작점이 될 것입니다 cybercom.net/~dcoffin/dcraw/dcraw.c
읽기 내 프로필하십시오

1
Raw Processing은 녹색 수준을 더 쉽게 계산할 수 있지만 컬러 캐스트 처리는 훨씬 더 복잡합니다.
jrista

3

글로브 프로젝트 ?

흰 종이를 사용하지 마십시오. 여기에는 일부 UV를 청색광으로 변환하는 광학 증 백제가 포함되어있어 노출이 잘못됩니다. 이것이 바로 jrista가 제안한 상용 그레이 카드가 존재하는 이유입니다.

정확히 같은 장소에서 모든 사진을 찍는 것이 올바른 방법입니다. 셔터 속도와 조리개에 관해서는 중요하지 않습니다. 셔터 속도가 전혀 변하지 않고 조리개가 이미지를 흐리게하지만 모든 픽셀 값을 합하면이 효과가 사라진다고 생각합니다. 오히려 일정한 노출을 얻으려고 노력합니다.

흐리게 처리 된 것과 흐리게되지 않는 것의 차이점에 대해서는 몇 가지 테스트 만 수행하면됩니다. 실제 양의 녹색이 빠르게 바뀌지 않으면 (즉, 오늘에서 내일로), 사진을 검사 할 때 변경되지 않아야합니다. 아마도 경험적인 접근 방식이 도움이 될 수 있습니다 (예를 들어 흐려질 때 항상 녹색이 10 % 더 높다는 것을 알게되면이를 보상 할 수 있습니다).


GLOBE 프로젝트는 아니지만 프로젝트로 전환 할 수 있습니다. 해당 사이트를 지적 해 주셔서 감사합니다.
David LeBauer

여러분도 관심을 가질만한 부분이 있습니다. 현재 웹캠 등의 비디오를 분석하고 통계 (녹색 공유 등)를 분석하는 프로그램을 작성 중입니다. 앞으로 몇 주 안에 완료해야합니다. phenocam.granjow.net
Simon A. Eugster

유용한 것 같습니다. 당신은 어떤 과학자들과 협력하고 있습니까?
David LeBauer 17

평가 방법이 마지막 부분이기 때문에 아직 그리 많지 않으며 쉽게 변경 / 추가 할 수 있습니다. 그러나 그것은 ETH 취리히의 프로젝트이며 거기에서도 사용될 것입니다. (정확히 말하면, 처음에 그들의 글로브 프로젝트에 대한 높은 학교 학생들이 사용됩니다.)
시몬 A. Eugster

1
  1. 카메라의 자동 화이트 밸런스를 사용하지만 감마 보정을 사용하지 않는 (예 : 컬러 밸런스이지만 선형 출력) 'RAW'촬영 및 16 비트 TIFF로 변환하는 것이 좋습니다. 16 비트를 사용하면 깊은 그림자 및 하이라이트에서 비율 및 인덱스를 더 잘 계산할 수 있습니다 (예 : 클리핑 없음). DCRAW는이 작업을 수행 할 수 있지만 카메라에는 사용하기 쉬운 자체 소프트웨어가 제공됩니다.

  2. 인덱스를 원한다면 RGB가 유일하게 유용한 색상 공간입니다. 이미 '녹색 발산'지수 (초과 녹색 지수라고도 함)에 대해 언급했습니다. 이것과 밀접하게 관련된 녹색 잎 알고리즘은 꽤 잘 작동합니다. 색상 기반 픽셀 분류 (예 : 채식 대 비 채식)를 수행하려면 HSV / HSI가 아닌 L a b * 색상 공간을 자세히 살펴 보겠습니다 . 실제로 Mathworks 웹 사이트에는 L ab * 분석. 분류는 스펙트럼 분석과 결합하여 a) 몇 개의 녹색 픽셀이 있고 b) 얼마나 녹색입니까? 이는 배경 스펙트럼 품질 (토양, 쓰레기 등)의 영향을받는 시간이 지남에 따라 변화 할 수있는 녹색 지수보다 더 유용 할 수 있습니다. 옥수수 작물에 대해 언급 했으므로 카메라가 위가 아닌 아래로 향하고 있다고 가정합니까?

  3. 카메라가 두 대인 경우 아래쪽으로 보이는 이미지 (녹색 측정)를 식물 덮개를 측정하는 위쪽으로 보이는 이미지와 결합 할 수 있습니다. 상향 이미지는 스펙트럼 분석에 적합하지 않으며 픽셀 분류는 아마도 RGB 이미지의 파란색 채널 만 사용하는 하늘 / 비 하늘 사이의 대비를 기반으로합니다.

  4. (매일?) 시계열을 수집하는 경우 하향 이미지를 '흐린 날'이미지와 '화창한 날'이미지로 나누고 편향을 확인할 수 있습니다. 원시 처리 중 색상 균형을 조정하여 편향이있는 경우 바이어스를 수정하거나 맑고 흐린 날이 산재되어 있다고 가정하면 한 시리즈를 다른 시리즈와 일치하도록 재조정 할 수 있습니다 (간단하게 유지).

즐기세요


빨간색, 녹색 및 파란색 타일이있는 색상 타일은 해당 경로로 이동하면 회색 카드보다 더 나을 수 있습니다.
fisheye
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.