C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[68263] Pixel 연산 속도 개선에 대한 질문입니다.
SEM80 [sem80] 1439 읽음    2012-09-27 10:35
안녕하세요.
오랜만에 볼랜드 포럼에 질문을 올립니다.
제가 요즘 영상처리 관련하여 프로그램을 구현하던 중 여태까지는 픽셀단위로 계산을 하다보니
연산 속도의 문제로 인하여 버퍼링 현상이 발생하는 문제가 발생하였습니다.
다음은 제가 현제 이미지 위에 글자를 로테이션 되게 하는 함수의 일부분입니다.
그런데 픽셀 연산 부분에서 버퍼링 현상이 발생합니다.
아래의 코드의에서 변경 전의 픽셀 연산 부분을 스캔라인으로 읽는 것까지는 별 문제 없이 진행하였으나
그 다음 코드를 어떻게 변환을 해서 픽셀의 위치를 어떻게 선언해야 되는지 잘 모르겠습니다.

보통 픽셀 위치 값을 가지고 로테이션을 했습니다. 스캔라인으로 로테이션을 할려니
어떻게 위치값을 정해야 될 지 모르겠습니다.
제가 아직 코드 부분을 올리는 방법을 몰라서^^;;
붙여넣기로 붙였습니다.
양해부탁드리며
좋은 답변 부탁드립니다.

//////////////변경전//////////////////////////////////////////////
   
               TColor XYPixel;
               TColor checkColor = clBlack;
    if( textColor == clBlack )
    {
        checkColor = clWhite;
    }
    for( int i=iXStart; i<iXCount; i++ )
    {
        for( int j=iYStart; j<iYCount; j++ )
        {
            XYPixel = pSrcBitmap->Canvas->Pixels[i][j];  //<- 픽셀 연산 부분
            if( XYPixel != checkColor )   //b
            {
                iRX = i + iShiftX;
                iRY = j - iBoxHeight - iShiftY;
                iPX = (int)( (double)( (double)( iRX * dCoAlpha )
                            - (double)( iRY * dSiAlpha ) ) + 0.5 ) + iX1;
                iPY = (int)( (double)( (double)( iRY * dCoAlpha )
                            + (double)( iRX * dSiAlpha ) ) + 0.5 ) + iY1;

                if( iPX >= 0 && iPX < pDstBitmap->Width &&iPY >= 0 && iPY < pDstBitmap->Height )
                {
                    pDstBitmap->Canvas->Pixels[iPX][iPY] = XYPixel;
                }
            }
        }
    }
////////////////변경 후//////////////////////////
    unsigned char         *rtColor;

    for( int j=iYStart; j<iYCount; j++ )
    {
        rtColor = (unsigned char *)pSrcBitmap->ScanLine[j];
    }

    pDstBitmap->Canvas->Draw(0, 0, pSrcBitmap);

+ -

관련 글 리스트
68263 Pixel 연산 속도 개선에 대한 질문입니다. SEM80 1439 2012/09/27
68288     Re:Pixel 연산 속도 개선에 대한 질문입니다. Nibble 2180 2012/10/01
68404         감사합니다. SEM80 1235 2012/10/17
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.