앱툴즈
46.♡.168.138
46.♡.168.129
46.♡.168.161
46.♡.168.136
46.♡.168.145
46.♡.168.162
46.♡.168.144
46.♡.168.140
115.♡.135.198
46.♡.168.139
 
게시물 3건
   
[안드로이드 영상처리] Bitmap을 배열로, 배열을 Bitmap으로
글쓴이 : 주재현 날짜 : 2011-02-01 (화) 11:15 조회 : 12237
Img_to_black.zip (276.2K), Down : 29, 2011-02-01 11:56:23
 이 부분은 안드로이드를 바탕으로 영상처리를 시도하실 분에게 유용한 자료라고 생각듭니다. 기존의 영상처리는 C기반이였고, 안드로이드에서 영상처리를 구현하기 위해서는 java기반에서 처리하여야 하므로 웹상에서도 자료가 많이 부족하리라 생각듭니다.

 

 이 강좌에서 궁국적으로 하고자 하는 것은 Bitmap을 픽셀단위의 (A)RGB값으로 분해하고, 분해한 (A)RGB를 다시 Bitmap으로 조합하는 것입니다. 이 부분을 개념적으로 설명해보았습니다.

 

 

1. Bitmap 객체에서 픽셀단위 영상을 빼는 방법
   
     -  영상정보를 가진 Bitmap 클래스의 bit 객체가 있습니다.
   
     -  bit 크기 만큼의 int 배열 pixels[][]를 선언합니다.  

            int [][] pixels = new int [bit.getHeight()][bit.getWidth()];   

    

      - bit를 배열로 빼줍니다.
            for(int i=0; i<bit.getHeight(); i++)

{
          for(int j=0; j<bit.getWidth();j++)
          {
                      pixels[i][j]=bit.getpixel(j,i);    
           }
 }



 2. 위에 추출한 픽셀값들을 RGB로 나눈다
    
       -안드로이드 Bitmap에서 추출한 int 형의 픽셀정보는 Alpha Red Green Blue 각 각 1바이트씩 4바이트로 이루어져 있습니다.(참고로 Alpha값은 대부분 default값으로 ff 즉 255로 초기화 되어 있습니다.)
     
      -그렇기 때문에 알파값은 나중에서 배열에서 비트맵으로 넘겨줄 때만 사용합니다. 
      
      -영상처리에는 RGB값만 있으면 되므로 이들을 추출해 보겠습니다.
             int red= (pixels[i][j]&0xff0000)/0x10000;
             int green= (pixels[i][j]&0xff00)/0x100;
             int blue= pixels[i][j]&0xff;
      
      -이제 우리는 red green blue 만을 이용할 수 있습니다. 

 

 3. 배열값으로 다시 Bitmap 을 구성한다.
     
       - 똑같이 반대로 하면 되겠습니다.


            int newPixels[]=ff*0x1000000+red*0x10000+green*0x100+blue;
            Bitmap newbit=Bitmap.createBitmap(newPixels,0,bit.getWidth(),bit.getWidth(),bit.getHeight(), Bitmap.Config.RGB_565);
 
 
4. 참고사항
       일반적으로 C계열에서는 영상배열을 unsigned char 또는 byte 형으로 담았습니다. 하지만 java기본적으로 int 형으로 처리하는 것 같습니다. 프로그램의 리소스문제때문에 byte형이 더 적합하다고 생각듭니다. 근데 int를 byte형으로 옮기니까 제대로 안 되는 것 같더라구요. 좀 더 연구해서 보충하도록 하겠습니다. 혹시 제가 설명이 부족할 수 있으니, 궁금하신 점이 있으신 분 코멘트 부탁드립니다.

 

5. 소스

  첨부한 소스는 영상을 받아와서 RGB로 분해한 후 반전시켜 비트맵으로 만들어 영상을 뿌려주는 소스입니다. 공부하실 때 참고하시기 바랍니다.

 





코멘트 하나만 남겨 주시면 안될까요? *^^*



이원희 2011-02-07 (월) 10:42
와우 재밋네요 ㅎㅎ. 프로젝트안의 박지성사진파일밑에 Thumbs.db파일은 뭐예요? 윈도에서 자동생성된 썸네일DB? 꽤 큰 이미지로 테스트해봤는데 생각외로 리소스오류 안나네요.
주재현 2011-02-07 (월) 16:47
많이 크면 오류날 겁니다. 리소스 생각 안 하고 막 짝거라서요 --ㅋ
주재현 2011-02-07 (월) 16:48
Thumbs.db 파일의 정체는 저도 모르겠습니당. ㅎㅎㅎ
박성호 2011-02-17 (목) 17:44
Thumbs.db 파일은 해당폴더내 이미지파일을 읽으면 자동생성되는 파일 삭제해도 무관
강의도 하고 뒈박~
과제 언제하려나....
강신재 2011-05-18 (수) 12:54
감사합니다~
나진경 2011-05-25 (수) 01:17
오오 좋은 정보 감사합니다 :)
박세안 2011-06-08 (수) 22:04
굿~ 체크 정보 입니다... 감사합니다. (__)
염성희 2011-08-24 (수) 15:27

좋은 정보 감사합니다.
졸업논문으로 이미지처리와 관련된 앱을 만들어야하는데 도통 모르겠네요~
많은 도움 되었습니다!! ^^

근데 파일 다운로드 권한은 어떻게 해야 받을 수 있는건가요??

   

게시물 3건
번호 제목 글쓴이 날짜 조회
3  [안드로이드 영상처리] Bitmap을 배열로, 배열을 Bitmap으로 +8 주재현 02-01 12238
2  Bitmap 축소와 확대 주재현 02-12 6498
1  안드로이드 영상관련 강의시작 합니다. +3 주재현 02-01 3110
 
 
 
Copyright ⓒ www.androidstudy.co.kr. All rights reserved.