ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • threshold 처리 코드
    컴공지식/컴퓨터비전 2024. 10. 2. 22:42

    이렇게 생겼다

    double threshold(Mat src, Mat dst, double thresh, double maxval, int type);

    double thresh가 픽셀 값과 비교할 임계값이고

    double maxval은 임계값을 넘는 픽셀에 할당될 값이다. 예를 들어 255 같은 값을 주면 흰색으로 변한다.

    int type은 임계값 처리 방식이다. 아래와 같이 쓸 수 있다.

     

    • THRESH_BINARY: 임계값보다 크면 maxval, 작으면 0.
    • THRESH_BINARY_INV: 위와 반대로 임계값보다 작으면 maxval, 크면 0.
    • THRESH_TRUNC: 임계값보다 크면 그 픽셀 값을 임계값으로, 작으면 그대로 유지.
    • THRESH_TOZERO: 임계값보다 크면 그대로 두고, 작으면 0.
    • THRESH_TOZERO_INV: 위와 반대로 임계값보다 작으면 0, 크면 그대로 유지.

     

    이건 Threshold Operation(임계값 처리)의 여러 종류를 시각적으로 보여주는 그래프다.

    Value and Threshold Level: 이 첫 번째 라인은 임계값을 기준으로 값이 어떻게 배분되는지 보여주는 기본적인 선

    Threshold Binary: 임계값을 넘는 값은 최댓값으로, 임계값보다 작은 값은 0으로 바뀜

    Threshold Binary Inverted: 이건 위의 반대

    Truncate: 임계값보다 큰 값은 임계값으로 잘리고, 작은 값은 그대로 유지

    Threshold to Zero, Inverted: 임계값보다 작은 값은 0으로 바뀌고, 큰 값은 그대로 유지

    Threshold to Zero: 이건 반대로, 임계값보다 큰 값은 유지되고 작은 값만 0으로

     

    다음은 코드 사용 예다.

    int main() {
        Mat image = imread("lena.png"); // 이미지를 불러옴
        cvtColor(image, image, CV_BGR2GRAY); // 컬러 이미지를 그레이스케일로 변환
        Mat dst; // 결과 이미지를 저장할 변수
        threshold(image, dst, 100, 255, THRESH_BINARY); // 임계값 처리 (임계값: 100, 최댓값: 255, 이진화)
        
        imshow("dst", dst); // 이진화된 이미지 출력
        imshow("image", image); // 원본 이미지 출력
        waitKey(0); // 키 입력 대기
        return 0;
    }

     

    threshold(image, dst, 100, 255, THRESH_BINARY)를 보면 픽셀 값이 100보다 크면 255(흰색)으로 바꾸고, 100보다 작으면 0(검은색)으로 바꾼다. THRESH_BINARY 방식이니까 완전한 흑백 이미지가 나온다.

     

    '컴공지식 > 컴퓨터비전' 카테고리의 다른 글

    inRange 함수  (0) 2024.10.02
    adaptiveThreshold 함수 코드  (0) 2024.10.02
    GrabCut이란?  (1) 2024.10.02
    적응형 임계값(Adaptive Thresholding)이란  (0) 2024.10.02
    Global Thresholding이란  (1) 2024.10.02
Designed by Tistory.