Bad pixel(value), Bad line(column)의 수정

ENVI 유저 분들에게 꽤나 많이 받는 질문 중 하나가 영상 내 bad pixel(value) 혹은 bad line(column)의 수정에 대한 것입니다. bad pixel이나 bad line이 의미하는 것은 말 그대로 뭔가 (기분)나쁜 픽셀이나 그로 이루어진 라인을 의미합니다. 일종의 noise라고 볼 수 있을텐데요, 주변값과 너무 동떨어지거나 누가봐도 명백히 잘못된 데이터가 될 것입니다. 이는 촬영 조건에 의한 일시적인 현상과 센서의 기능 저하로 인한 지속적인 현상으로 구분이 되는데요, 이러한 bad pixel이나 bad line이 영상에 포함된다면 최대/최소값 혹은 평균값 등의 산출 시 정확한 값을 얻기가 힘들어집니다. 그러므로 이에 대한 수정이 반드시 필요하겠지요. 의외로 이런 데이터를 많이 접할 수 있는게 사실입니다. 그리고 이를 수정할 수 있는 기능이 ENVI에 잘 구성되어 있지만, 이를 쉽게 찾지 못하는 것도 역시 사실입니다. 왜냐하면 이런 경우 ‘NOISE’라고 검색을 하실 것 같은데요, ENVI classic이나 New ENVI에서 모두 ‘BAD’로 검색을 해야 그 기능이 확인이 되기 때문입니다. 여기까지만 읽으셔도, ‘아! 당했다!’ 라고 생각하시는 분이 계실 것 같습니다. 다만, 아직 더 확인하시고 싶으신 분은 아래 내용을 봐주세요. bad line이 있는 데이터를 수정하는 방법을 담고 있습니다.

사용 데이터는 하이퍼스펙트럴 영상인 HYPERION의 일부 밴드입니다. 기본적인 설명은 ENVI classic을 기준으로 합니다. New ENVI에서는 toolbox에 bad 라고 검색해보시면, ‘Replace Bad Lines’와 ‘Replace Bad Values’라는 두 기능이 검색됩니다.

first
해당 영상을 보면 ‘아, 이게 bad line이구나!’ 하고 느끼실 수 있는 라인이 있습니다. 이 데이터의 경우 정확히는 column이구요. 이 컬럼에 대해 정확히 값을 확인하고자 하신다면, image window의 Tools -> Spectral Pixel Editor를 선택합니다. 그러면 아래와 같이 줌 윈도우에 해당하는 빨간 박스 지역의 pixel value를 모두 확인할 수 있습니다. 47번 컬럼이 주변에 비해 낮은 값을 가지고 있음을 확인할 수 있습니다. 각 픽셀을 더블클릭하여 마음껏 임의의 숫자로 변경하실 수 있습니다.
change

정확한 값을 알고 있는 경우라면 위 방법이 유효하겠지만, 정확한 값을 모르고, 각 픽셀을 하나하나 수정하기 번거롭다면 자동 수정으로 처리를 해야할 것입니다. 47번 컬럼을 클릭하신 후, Options를 눌러보시면 좋은 기능이 확인됩니다. ‘Replace selected column with average’ 입니다. 좌우 컬럼 값을 이용하여 smooth하게 값을 변경하는 기능입니다. 결과는 아래와 같이 나타납니다. 문제가 해결된 것 같습니다.
forth

하지만 위 경우에도 문제는 남습니다. 데이터 전체를 수정하는 것이 아닌 Spatial Pixel Editor 창에 보이는 부분만을 수정하기 때문입니다. 영상 전체를 수정하시고자 할 경우, 다른 기능을 이용해야 합니다. 메인 메뉴의 Basic Tools -> Preprocessing -> General Purpose Utilities-> Replace Bad Lines 입니다. 옵션으로 선택 라인의 주변 몇 개의 라인의 평균값으로 대체할 것인가가 있습니다(Half Width to Average). 이는 New ENVI에서도 동일합니다.
다만, 정확히 line만을 수정합니다. column은 바로 수정이 되지 않기 때문에, 예제 파일의 경우 Rotating Image를 이용한 90도 회전 과정이 선행되어야 합니다. 90도 회전 후,
fifth
47번 라인을 수정하면 아래와 같이 bad line이 모두 수정된 것을 확인할 수 있습니다.
sixth
참고로 수정하고자 하는 라인의 개수는 1개로 제한되지 않습니다. 한번에 여러 라인의 수정이 가능합니다.