제목: 이미지 프로세싱 #4 - 10/22 [] | 작성일: 2010. 10. 22. 17:26 |
[이미지 마스킹]
- 이미지의 특별한 부분을 성별하여 추출할 때 이용하는 방법
명령어를 이용하여 마스크를 제작하고 이를 벡터연산에 적용하여, 추출한다.
따라서 마스크는 0과 1로 이루어진 2차원 또는 3차원 배열이 될 수 있다.
[이미지 클리핑]
이미지의 픽셀값이 임게값을 중심으로 그 이상은 그대로 두고, 나머지 값은 임계값으로 고정시켜서
원하는 임계값을 기준으로 이미지의 형태를 보고자 할 때 사용하는 방법
[이미지 캡쳐]
간단하게 화면상의 그래프를 문서의 작성이나 기타에 활용하게 캡쳐하여 붙여넣는 방법 (tvrd function)
[이미지 TIFF]
read_tiff, ' 주소 ', 변수
변수=
print,변수.dimentsions
print,변수,pixel_type
[이미지 마스크]
S=dialog_read_image(image=myimage)
plot, bindgen(256)>100
window, 0
tvscl, myimage<140
window, 1
plot, bindgen(256)<140
window 2
tvscl, myimage>140<200
window,3
plot, bindgen(256)<200>140
plot, bindgen(256)<140
바이트 스케일링을 하면 최소값 140, 최대값 200
그 사이의 60이라는 값을 255로 늘리게 되는 셈이므로 정확도가 높아진다.
[tvscl 함수 smooth, sobel]
tvscl, smooth(myimage, 7)
; 포토샵에 blur 효과 같은 역할, 7단계로 뭉개라는 의미
tvscl, float(myimage)-smooth(myimage, 7)
; 원래 이미지에서 7단계를 뭉갠 이미지를 뺀 값 = unsharp maskin
; 샤프하지 않은 자잘한 구조나 작은 구조들만 나온다.
tvscl, sobel(myimag)
; 위에서 의미하는 같은 설명, 작은 구조만 도드라지게 나온다.
[이미지 마스킹 과정]
file=filepath('convec.dat',subdirectory=['examples','data'])
imagesize=[248,248] ; already known array size
image=read_binary(file,data_dims=imagesize)
tv,image
coremask=image ge 255
;가운데 코어 부분이 제일 밝은 (255값이므로) 255값만 추출
image1=image*coremask
; 이미지1=이미지 * 255 255 같거나 큰 값만 살림
corextract=image lt 200
image2=image*corextract
; 이미지2 \ 이미지 * 200 200 작거나 같은 값 살린다
loadct,27
tv, image1, 1
tv, image2, 2
;image clipping test
window, 4, xs=496, ys=496
tv,image,0
tv,image > 200,1
tv, image >100,2
tv, image >50,3
wset,1
;window 1번을 지정
img=tvrd()
write_jpeg, '저장 주소', img
;이러면 흑백만 저장됨
img=tvrd(true=1)
;트루칼라 적용,
write_jpeg,'true.jpg',img, true=1