그림 파일 불러오기

통계 목적으로 주로 사용할 수 있지만 사실 응용 범위는 끝이 없는 R

특정 질환의 전과 후 비교한 안저사진 분석 그림을 본 순간 R에서도 가능할 것이라는 생각이 들었다.

우선 인터넷에서 안저사진 하나를 구한 다음에 시작했다.

 

원래는 크기가 4배쯤 컸지만 편의를 위하여 가로 600픽셀 크기로 줄였다.

R에서 그림 파일을 불러오는 방법은 쉽다. 난 JPEG 파일을 구했기 때문에 다음과 같이 적용했다.


library(jpeg)

before_original <- readJPEG(“F:/retina_re.jpg”, native=FALSE)

readJPEG 라는 명령어를 사용하면 되며, native 항목의 옵션에서 FALSE가 기본항목이다. 

FALSE를 선택하게 되면 가로픽셀 x 세로픽셀 크기의 matrix 3개(RGB, 3 channel) 가 합쳐진 matrix 로 구성된다.

이 방법으로 불러오면 색상에 대한 정보는 최소값이 0, 최대값이 1로 된다고 한다.

(차원인거 같기는 한데 사실 어떻게 불러야 하는지 모르겠음)

따라서, 

before_original [,,1] Red

before_original [,,2] Green

before_original [,,3] Blue 

가 되겠다.

나중에 편리할 것 같아서 각각을 나눠서 늘 쓰는 X x Y 의 matrix 로 구성했다.

before_original_1 <- before_original[,,1]

before_original_2 <- before_original[,,2]

before_original_3 <- before_original[,,3]

잘 불러와졌는지 확인하기 위하여 각각의 점들에 해당하는 색상 정보를 바탕으로 점을 찍어 보기로 하였다.

빈 화면을 그리는 방법을 몰라서 우선 빈 화면을 하나 그려야 했다.

그림 파일은 아마 좌측 상단부터 (1,1) 로  구성이 되어 있겠지만,

내가 아는 수학의 세계에서 (1,1)은 좌측 하단에 존재한다.

즉, y축으로 대칭된 구조이다. 그래서 다음과 같이  살짝 변경했다. 

plot(c(1,before_original_width), c(-before_original_height, -1), type=”n”, xlab=””, ylab=””)

점을 그려넣어야 하는데, 

점의 색상 정보를 입력하는 것은 rgb() 를 사용하면 쉽게 적용시킬 수 있다. 

maxColorValue 는 사실 기본이 1이다.

그래서 사각형의 점을 쭈욱 그려보면

for (Y in 1:before_original_height){

  for (X in 1:before_original_width){

    points(X, -Y, pch=15, cex=1, col=rgb(before_original_1[Y, X], before_original_2[Y, X], before_original_3[Y, X], maxColorValue = 1))

}}

살짝 뭉게지기는 했지만, 같은 화면임을 알 수가 있다.

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *