체크 플레그 만들고 이미지로 저장까지..

게시판 IDL Q&A 체크 플레그 만들고 이미지로 저장까지..

2 답변 글타래를 보이고 있습니다
  • 글쓴이
    • #53 Reply
      sujin park
      회원

      제목 그대로, 아이디엘 윈도우에 체크 플레그를 만들고 이미지로 저장까지 하려는 목적으로 프로시저를 짜 보았는데요.

      pro auto_cp,x

       

      j=-1

       

      img=bytarr(400,400)

      repeat begin

      j=j+1

      img[0+(200/x)*j:((200/x)+(200/x)*j)-1,((200/x)+(200/x)*j)-1:((400/x)+(200/x)*j)-1]=255

      img[(200/x)+(200/x)*j-1:(400/x)+(200/x)*j-1,0+(200/x)*j:(200/x)+(200/x)*j-1]=255

       

      endrep until ((200*j/x)-1 eq 399)

       

       

      write_jpeg,’test1.jpg’,img

      end

       

      이렇게 짜 보았는데, 배열상에 문제가 있는지, 대각선 방향으로만 체크플레그가 만들어 지고,  또 이후 어떤이유에선지 중지가 되어 write_jpeg 로 넘어가지 못하고 중지되어 버립니다. 그래서 이미지가 저장되지도 않구요.

      어떤부분이 잘못된 것 일까요?.

      ps.간단한 문제인것 같았는데, 오랫동안 씨름하다 수소문해 찾아와 질문 드립니다..

    • #56 Reply
      Jonghyuk Yi
      회원

      N=7
      data=bytarr(N, N)
      data[0:*:2]=1
      print, data
      data=data*255

      sz=N*60
      img=rebin(data, sz, sz, /SAMPLE)
      window, xsize=sz, ysize=sz
      tv, img
      end

      일단 위 예제는 N이 홀수일 경우에만 정상적으로 보입니다.  프로그램 구조를 일단 단순화하는 것이 좋으므로 짝수일 경우는 배제하였습니다.

      위 예제에서 print로 출력되는 부분은 다음과 같습니다.

         1   0   1   0   1   0   1
         0   1   0   1   0   1   0
         1   0   1   0   1   0   1
         0   1   0   1   0   1   0
         1   0   1   0   1   0   1
         0   1   0   1   0   1   0
         1   0   1   0   1   0   1

      보이는 대로 일단 배열 자체를 체크 플래그로 만들고, 곱하기 255를 해서 흑색0과 백색255로 나누고 마지막으로 rebin을 통해 확대한 이미지로 변환하는 것이 이 예제의 흐름입니다.

      처음 올려주신 예제가 repeat를 사용하기 위한 연습이라면 제가 잘못 답변을 드린 것인데요, 처음 올려주신 예제처럼 하시면 X와 Y가 함께 증가하게 되므로 대각선 방향만 원하시는 대로 생성될 수밖에 없을 것 같습니다.

      아직 준비중인 사이트인데 첫 손님으로 오셨네요. 올리신 글이 어느날 없어지거나 할 수도 있는데요, 준비중이어서 그런 것이니 널리 양해 부탁드립니다. 일부러 지우거나 하는 그런 일은 없을 것입니다.

      예상치 못했지만, 환영합니다.

    • #57 Reply
      sujin park
      회원

      답변 감사합니다.. 너무 초보적인 내용이라 계속 질문 드리는게 부끄럽습니다 만은. 이것은 제가 for 문으로 짜본 프로시저 입니다.

       

      pro make_cf,k

      img=bytarr(400,400)

      for i=0,k,2 do begin

      for j=0,k,2 do begin

      print, i,j

      img[i*(400/(k+1)):i*(400/(k+1))+((400/(k+1))-1),j*(400/(k+1)):j*(400/(k+1))+((400/(k+1))-1)]=255

      endfor

      endfor

      for i=1,k,2 do begin

      for j=1,k,2 do begin

      print,i,j

      img[i*(400/(k+1)):i*(400/(k+1))+((400/(k+1))-1),j*(400/(k+1)):j*(400/(k+1))+((400/(k+1))-1)]=255

      endfor

      endfor

      write_jpeg,’checkflag.jpg’,img

      end

       

      중간에 print,i,j 는, i 에 따라 j 가 어떻게 나오는가 확인해보려고 함인데,  제 생각에는 repeat until 문의 논리와 같게 짰다고 생각 됐는데, 아니 었나 봅니다, 이 for 문과 같은 논리로 repeat until 문을 만들수는 없을까요?. 있다면 문자는 2개가 되어야 할까요?

      궁금합니다.

       

      ps. 생각도 못했었던 좋은 답변 받게되어 기분이 좋습니다. 감사합니다.

2 답변 글타래를 보이고 있습니다
'체크 플레그 만들고 이미지로 저장까지..'에 답변달기
글쓴이 정보: