GRASS에서 pan-sharpened Landsat 이미지의 잘못된 합성 색상 균형을 맞추는 방법은 무엇입니까?


9

내가 사용 일부 잔디 탐사 위성 이미지에 팬 선명 복합을 시도 할 때마다 i.pansharpen, i.fusion.brovey또는 IHS 방법을 선명하게 출력은 다음과 같은 특징의 일부 또는 전부를해야합니다 :

  • 합성되지 않은 합성물과 비교하여 합성물 색상이 다른 색조로 표시됨
  • 밝기 레벨이 엉망입니다
  • 전체 합성물이 모두 백색 / 흑백으로 진행됨 (위에서 대기 중 반사율 또는 표면 반사율 보정으로 사전 처리 된 이미지 사용시 i.landsat.toar)

또한 다음을 모두 시도했습니다 . 그러나 색상 / 밝기는 동일하게 유지되거나 더 나빠졌습니다.

  • i.landsat.rgb팬 샤프닝 공정 전후 적용
  • -f또는 -p플래그를 사용하여 재생i.landsat.rgb
  • r.colors색상 표를 grey / grey255 / grey.eq로 편집 하려고 했습니다.
  • 시도 i.pansharpen모든 Brovey 영 / IHS / PCA 방법을 사용하여
  • 블루 채널을 재조정하기 위해 -l깃발 i.pansharpen을 넣은 상태 에서 플레이

GRASS의 GIS 설명서는 범 선명하고 컬러 밸런싱을 수행하는 방법에 대한 설명 못했지만, 나는 동시 워크 플로우에서 두 프로세스를 결합하는 방법을 알아낼 수 없습니다. GRASS에서 색상 표, 색상 히스토그램 등에 대한 이해가 부족했기 때문인 것으로 의심됩니다.

그래서 누군가 나에게 설명 할 수 있습니까-GRASS에서 이미지 처리 후 Landsat 이미지를 다룰 때 색상 균형 문제를 어떻게 해결합니까? 좋아하는 워크 플로우 / 방법을 나와 공유 할 수 있습니까?

의견을 보내 주셔서 감사합니다!

답변:


6

개요

GRASS-GIS 버전 7에서 Pan-sharpening 후 수용 가능한 색상 균형 잡힌 합성 이미지를 얻는 한 가지 접근 방식은 다음과 같습니다.

  1. 입력 데이터가 [0, 255] 내부에서 8 비트 범위인지 확인
  2. 데이터가 [0, 255] 내부에 있으면 팬 샤프닝 ( i.pansharpen)으로 진행하십시오.
  3. 데이터가 [0, 255] 내에 있지 않으면이 범위 ( r.rescale)로 크기를 조정하십시오.
  4. 특징적인 방법 (Brovey, IHS, PCA)으로 팬 샤프닝
  5. i.landsat.rgb모듈 을 사용 하거나 관심 밴드의 색상 표를 수동으로 조정하여 색상 균형을 자동 으로 조정

세부 사항 및 예제 지시 사항

팬 샤프닝 / 퓨전

GRASS 7 에는 전용 팬 샤프닝 모듈 i.pansharpen이 있습니다.이 샤프닝에는 세 가지 샤프닝 기술, 즉 Brovey 변환 , 클래식 IHS 방법 및 PCA 기반의 기술이 있습니다 .

i.pansharpen입력으로 8 비트 래스터 맵과 함께 잘 작동합니다. 처리 할 데이터가이 범위를 벗어나거나 범위를 벗어나면 [0, 255]GRASS ' r.rescale모듈 을 사용하여이 범위에 맞게 크기를 조정할 수 있습니다 .

사이의 범위 인 11 비트 스펙트럼 대역 (예 : 파란색, 녹색, 빨간색, NIR 및 팬)이 주어지면 예를 들어 [0, 2047]파란색 대역을 쿼리하면

r.info Blue_DNs -r
min=0
max=2047

사이의 범위로 블루 밴드 크기 조정 [0, 255]

r.rescale in=Blue_DNs out=Blue_DNs_255 from=0,2047 to=0,255

동일한 단계가 나머지 다중 스펙트럼 대역과 관심있는 색채 대역에 모두 적용됩니다.

GRASS로 작업 할 때 평소와 같이 관심 영역을 설정해야합니다 . 이 특정한 경우에 모듈에 의해 해상도 자체가 처리되고 결과적으로 팬-날카롭게 래스터 맵은 Panchromatic 밴드와 동일한 높은 해상도를 갖습니다.g.regionrast=Blue_DNs_255

IHS 기반 Pan-Sharpening 작업에 대한 예제 명령은 다음과 같습니다.

i.pansharpen pan=Pan_DNs_255 ms1=Blue_DNs_255 ms2=Green_DNs_255 ms3=Red_DNs_255 output=sharptest255 sharpen=ihs

색상 균형

프로세스 완료 후 모듈은 출력

...
The following pan-sharpened output maps have been generated:
sharptest255_red
sharptest255_green
sharptest255_blue

To visualize output, run: g.region -p rast=sharptest255.red
d.rgb r=sharptest255_red g=sharptest255_green b=sharptest255_blue

일반적으로 i.landsat.rgb 모듈을 사용하거나 RGB 이미지를 구성하는 3 개의 대역 각각을 수동으로 조정 하여 팬 샤프닝 후에 색상을 다시 균형을 맞추기에 충분해야합니다 .

스크린 샷

... 추가 될


더 좋은 방법이 있어야한다는 것을 알았습니다! 이제 i.sharpen 모듈을 자유롭게 사용할 수 있습니다. r.rescale 모듈을 지적 해 주셔서 감사합니다. 멋진 일 Nikos!

Haziq, 11 비트 데이터 세트를 8 비트로 변환 할 때 "미세한"세부 정보가 손실되는지 여부와 그 정도가 확실하지 않습니다. 예를 들어 QuickBird 이미지는 11 비트 센서입니다. 8 비트 및 16 비트 형식으로 제공됩니다. 무엇을해야할지 결정하는 것은 사용자의 몫입니다. i.pansharpen모든 종류의 형식을 처리하는 것이 좋습니다 . 관련 "티켓"에서 참조하시기 바랍니다 : 티켓 # 2048 : i.pansharpen 8 비트 이미지로 제한 . 반면에, 나는 단순히 물건을 이해하지 못해서 i.pansharpen을 올바르게 사용할 수 없습니다 ...?
Nikos Alexandris

7

나는 높고 낮은 것을 검색했으며 내 문제의 근본을 발견했다고 생각합니다. 나는 그들을 위해 해결책을 얻었다 고 생각하지만 조금 지저분하다. 더 나은 방법으로 해결할 수 있다고 확신합니다. 더 쉬운 방법을 알고 있다면 공유하십시오!

문제의 뿌리 :

  1. 의 출력은 i.landsat.toar 부동 소수점 입니다. 어떤 팬 샤프닝 방법으로 부동 소수점 래스터를 사용하면 색상이 엉망이된다는 것을 깨달았습니다. 이 알고리즘은 어떻게 든 원래 정수 형식의 래스터를 선호합니다.
  2. 팬 선명 같은 모듈 i.pansharpen i.fusion.brovey 모듈은 엉망 업 색상 것입니다 . 나는 그것들이 그 모듈에서 사용했던 알고리즘을 이해하지 못했지만 어떻게 든 색상 표가 영향을 받아 결과적으로 선명하게 된 이미지를 망칠 것입니다.

해결책:

  1. i.landsat.toar 사용하여 출력을 float에서 int로 변환합니다r.recode .
  2. IHS 팬 샤프닝 방법 ( i.rgb.hisi.his.rgb) 에서 래스터를 입력으로 사용하십시오 . 내가 사용에서 멀리 유지 i.pansharpen하고 i.fusion.brovey.

워크 플로 :

  1. 로 처리 된 각 래스터 밴드 의 DN 최소값과 최대 값을 얻으려면 플래그 r.info 와 함께 사용하십시오 . 예를 들면 다음과 같습니다.-r i.landsat.toar

    > r.info -r BAND1
    min=0.01
    max=0.370064120902708
    

    보시다시피, 값은 0-1 사이이며 원래 값과는 매우 다릅니다 (0-255 사이). 사용 된 값의 범위가 매우 낮기 때문에 (1 미만) 팬 샤프닝의 출력이 공백으로 나타나는 이유를 설명합니다.

  2. 을 사용하여 래스터 밴드를 변환하십시오 r.recode . 1 단계에서 얻은 최소값과 최대 값을 사용하여 0-255의 새로운 범위로 변환하십시오. 예제 코드 스 니펫 :

    r.recode input=BAND1 output=NEWBAND1 rules=- << EOF
    0.01:0.370064120902708:0:255
    EOF
    

    다음과 같이 새로운 변환 된 값을 확인할 수 있습니다 r.info.

    > r.info -r NEWBAND1
    min=1
    max=254
    

    값은 0-255입니다. 이제 팬 샤프닝 프로세스에 사용할 수 있습니다.

  3. 로 변환 된 밴드에 그레이 스케일 색상 표를 적용 r.colors 합니다.

    r.colors NEWBAND1 color=grey
    

    지금까지 나는 회색 색상 표를 사용하여 최상의 결과를 얻었습니다. 다른 대안은와 함께 color=grey.eq또는 표를 사용하여 회색 표를 균등화 하는 것 -e입니다 color=grey. 또는 . i.landsat.rgb대신 모듈을 사용할 수 있습니다 r.colors.

  4. 팬 래스터 (밴드 8)를 포함하여 복합재로 사용하려는 다른 래스터 밴드와 함께 1-3 단계를 반복합니다 . 스크립트 사용은 여기에서 대단히 감사하겠습니다.

  5. 그런 다음 가공 된 래스터를 IHS 팬 샤프닝 방법의 입력으로 사용하십시오 . 예를 들어 밴드 7,4,2의 합성물을 만들 때 :

    i.rgb.his r=NEWBAND7 g=NEWBAND4 b=NEWBAND2 hue=HUE int=INT sat=SAT
    

    색조 레이어 HUE, 강도 레이어 INT및 채도 레이어의 3 가지 레이어가 출력됩니다 SAT. 우리는 그 강도 층 대체 할 INT팬 래스터 밴드 NEWBAND8의를 i.his.rgb:

    i.his.rgb hue=HUE sat=SAT int=NEWBAND8 r=COMP742_red g=COMP742_green b=COMP742_blue
    

    적색 채널 생성 COMP742_red , COMP742_green을 , COMP742_blue는 다음 사용하여 결합 될 수 d.rgb또는 r.composite..

사전 및 이후 샘플 :

팬 샤프닝 전 :

전에

팬 샤프닝 후 :

후

작은 이미지에서 볼 때 뚜렷한 차이를 말하기가 어려울 수 있습니다. 그러나 중요한 것은 팬 샤프한 이미지의 색상이 원본의 합성물과 일치한다는 것입니다. 임무 완수!

다른 참고 사항 :

  • r.recode 열 밴드 (밴드 6)를 사용 하지 마십시오 . i.landsat.toar이 열 대역을 켈빈 온도 값으로 출력합니다 (DN 값과 관련이 없음). r.recode일상적인 다중 스펙트럼 및 팬 밴드 (밴드 1-5,7,8)에 루틴을 유지하십시오 .
  • 우리는 심지어 사용하지 않을 경우 i.landsat.toar , 하지만 결과 복합 정말 잘못 보면 , 보통 때문에 전과 범 선명하게 처리 한 후 컬러 테이블의 부정합이다. 나는 r.colors RASTER color=grey팬 샤프닝 이전의 원래 래스터 밴드와 팬 샤프닝 후 결과 채널에 적용하여 색상의 근접한 일치를 보장했습니다.
  • 잘못된 색상 합성 문제의 일반적인 경우 : 원래 래스터 밴드는에 color=grey255있고 출력 i.landsat.rgb은에 color=grey.eq있습니다. 둘 다 다르게 보이는 것도 당연합니다!
  • 사용하기 위해 landsat 이미지를 처리하는 것은 실제로 시간-과세 활동이 될 수 있습니다 . 모든 것이 처리 될 때까지 기다리거나 적어도 커피와 좋은 음악을 들으면서 더 잘해야합니다.)

이것이 누군가에게 도움이되기를 바랍니다 : 무엇이 잘못되었는지 알기 위해 며칠이 걸렸습니다 ..


1
귀하의 연구와 노력에 감사 드리며, svn의 새로운 GRASS 7 에서도이 문제가 발생했습니다. 이제 pansharpened 이미지의 색상이 정상입니다. =)
Vladimir

그래, 내가 실행중인 GRASS의 버전을 언급하는 것을 잊었다. GRASS 7svn을 사용하고 있습니다. 이 문제는 모든 버전의 GRASS에서 발생하지 않을 수도 있음을 깨달아야합니다 (다른 버전은 시도하지 않았습니다).

이것으로 돌아 가기 : r.mapcalc통합 int()함수 와 함께 사용하여 부동 소수점 래스터 맵을 정수 래스터 맵으로 변환 할 수 있습니다 . 나는 r.recode당신의 응용 프로그램의 맥락에서 사용하기위한 것이 아니라고 생각 합니다.
Nikos Alexandris

1
전체적인 "문제" i.pansharpen는 8 비트 래스터 맵을 입력으로 예상한다는 것입니다. 즉 입력 값의 범위는 0에서 255 사이 여야합니다.
Nikos Alexandris

또한 i.pansharpengrass7_trunk에만 있습니다. 그것은 개발 버전입니다 ... :-)
Nikos Alexandris
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.