간단히 말해서
"회색 (대역) + 불투명도 (대역) = 투명 결과" 와 같이 아래 3 개의 이미지 세트를 읽어야 합니다. 관련된 github 호스트 makefile을 통해 몇 분 안에 이러한 프로세스를 테스트 할 수 있습니다 . 프로세스 # 3 은 170 (강한 그림자 유지)과 220 (모든 그림자 유지) 사이의 임계 값을 사용하는 것이 좋습니다. 프로세스 3은 가장 강한 그림자를 제공하고 회색 미백 효과를 피 합니다. 필요에 따라 결과 레이어의 전체 불투명도를 조정합니다. 를 --calc="<equation>"
사용하여 방정식 을 필요에 따라 향상시킬 수도 있습니다 gdal_calc
.
Photoshop 디자이너가 설명한이 방법에 대한 느긋한 비디오는 Photoshop 에서 음영 처리 추가 (16 분)를 참조하십시오 .
배경
gdaldem hillshade
가장 어두운 그림자에서 가장 밝은 픽셀에 이르기까지 픽셀 값 범위가 [1-255] 인 1 밴드 그레이 스케일 파일을 생성합니다. 평평한 영역의 경우 px = 221 (#DDDDDD). NoDataValue
픽셀은 기본 nodatavalue를 얻습니다 0
. 또한 입력 및 출력에서 가장 어두운 검은 색은입니다 1
. 불투명 밴드가 정의되지 않은 경우 불투명도는 100 % 입니다.
gdaldem hillshade input.tif hillshade.tmp.tif -s 111120 -z 5 -az 315 -alt 60 -compute_edges
우리는 두 번째 불투명 밴드를 정의하고 제어하고 싶습니다!
목표
우리는 하나의 그레이 스케일 밴드를 -b 1
원합니다. gdal 외부에서, px = [1-255]와 같은 연속 범위를 가진 회색 밴드입니다. 관련이없는 영역을 잘라내거나 (# 2) px = 1로 어둡게하고 불투명도 밴드 (# 3)에 의존 할 수 있습니다.
우리는 하나의 불투명 밴드 -b 2
, 일반적으로 언덕 그늘의 반전 또는 관련 기능을 원합니다. 관련이없는 영역을 잘라낼 수 있습니다 (# 2). 우아함이없는 반면 px = [1-255]와 같은 연속적인 범위의 불투명도 여야합니다.
gdal_calc
입력 파일 A, B, C ...의 픽셀에 대해 수학 연산을 수행하고 부울 값 (예 : A<220
1 (true) 또는 0 (false))을 확인하는 데 사용할 수 있습니다. 조건부 미적분을 허용합니다. 조건이 거짓이면 방정식의 관련 부분이 무효화됩니다.
1. 투명한 회색 언덕
다음은 표준 gdal hillshade
회색과 흰색 영역이 점점 투명 해지 면서 매우 우수한 2 대역 결과를 제공합니다 .
# hillshade px=A, opacity is its invert: px=255-A
gdal_calc.py -A ./hillshade.tmp.tif --outfile=./opacity.tif --calc="255-A"
# assigns to relevant bands -b 1 and -b 2
gdalbuildvrt -separate ./final.vrt ./hillshade.tmp.tif ./opacity.tif
2. 의사 작물을 통한 최적화 (-b 1 & -b 2)
-b 1
불투명도 -b 2
를 추가 하면 2/3의 픽셀 (회색조)이 맨 눈에 보이지 않게 되지만이 픽셀은 다양한 흰색 -b 1
과 낮은 불투명도 -b 2
값을 유지 합니다. 모든 흰색 투명 [255,1]
픽셀 로 만들 수 있으므로 압축률이 향상됩니다.
# filter the color band, keep greyness of relevant shadows below limit
gdal_calc.py -A ./hillshade.tmp.tif --outfile=./color_crop.tmp.tif \
--calc="255*(A>220) + A*(A<=220)"
# filter the opacity band, keep opacity of relevant shadows below limit
gdal_calc.py -A ./hillshade.tmp.tif --outfile=./opacity_crop.tmp.tif \
--calc=" 1*(A>220) +(256-A)*(A<=220)"
# gdalbuildvrt -separate ./final.vrt ./color_crop.tmp.tif ./opacity_crop.tmp.tif
# gdal_translate -co COMPRESS=LZW -co ALPHA=YES ./final.vrt ./final_crop.tif
3. 추가 -b 1 최적화 (자르기 + 검게)
우리는 -b 2
신뢰할 수있는 불투명도 대역 을 가지고 있기 때문에 -b 1
픽셀을 흰색 px = 255 via 255*(A>220)
또는 검은 색 px = 1 via로 만들 수 1*(A>220)
있습니다.
gdal_calc.py -A ./hillshade.tmp.tif --outfile=./color.tmp.tif \
--calc="255*(A>220) + 1*(A<=220)"
# gdal_calc.py -A ./hillshade.tmp.tif --outfile=./opacity_crop.tmp.tif \
# --calc=" 1*(A>220) +(256-A)*(A<=220)".
# gdalbuildvrt -separate ./final.vrt ./color.tmp.tif ./opacity_crop.tif
# gdal_translate -co COMPRESS=LZW -co ALPHA=YES ./final.vrt ./final.tif
이 결과는 더 강한 그림자를 보여줍니다 .
결과
투명한 언덕 모양을 만들어 평야의 이전 회색 영역과 관련 원치 않는 유비쿼터스 그레이 잉 페이딩 효과를 제거 할 수 있습니다. 원하는 부산물은 최종 비주얼 제품에 대한 제어력이 향상됩니다. 설명 된 프로세스는 대부분의 회색 및 모든 흰색 픽셀을 제거합니다. 컬러 풀 한 배경의 일반 이미지는 투명-검정색 언덕 음영으로 오버레이 될 때 선택한 색상을 유지하며 그림자가있는 영역 만 어둡게됩니다. 아래의 프로세스 # 2 (왼쪽)와 # 3 (오른쪽)의 비교.
개요 :
확대 / 축소, 그림자 (전후)를 확인하십시오.
추가 최적화
흰색 영역 : 3D 느낌을 높이기 위해 가장 밝은 영역을 유지하고자 할 수도 있습니다. 문자 그대로 임계 값이 약간 변경되고 gdal_calc를 통해 두 출력이 병합되는이 현재 접근 방식의 대칭입니다. 일반은 100 % 투명하고 가장 어두운 그림자와 가장 밝은 영역은 불투명합니다.
스무딩 : 더 나은 최종 결과를 얻기 위해 입력 힐 셰이드가 미리 스무딩 될 수 있습니다. GRASS를 사용하여 DEM 스무딩을 참조하십시오 .
합성 산양 ( 합성 산양 을 만드는 방법? ).
울퉁불퉁 한 언덕 도 흥미 롭습니다 ( 설명 )
노트
- 평면 영역 임계 값 의
gdal hillshade
출력은 평탄 영역을 표시, PX = 221 (#DDDDDD = 221,221,221])이다. 또한, 언덕 음영의 px = 221은 이미지를 그림자 내 경사 (A <221)와 빛 내 경사 (A> 221) 픽셀로 나눕니다.
- px = [170-220] 의 처리 임계 값이 양호하다는 것이 눈으로 알아볼 수있는 그림자의 거의 100 %를 유지하며, 이는 거의 릴리프 영역의 15-35 %를 나타냅니다.
- 파일 크기> 압축 : # 1, # 2, # 3 중 final.tif는 압축이없는 경우 ~ 1.3MB이고 압축 후 ~ 0.3-0.16MB이며 80 % 절약됩니다!
- 파일 크기> 자르기 : # 1의 .326KB에서 자르기 색상 및 불투명도 (# 2)는 310kb, 검은 색 (# 3)은 160kb입니다. 파일 크기에 대한 자르기 효과는 px = 220에서 임계 값으로 5 ~ 50 % 감소한 값입니다.