마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

Image 의 Contrast 조절

0 추천
안녕하세요

이미지의 Contrast 를 조절해달라는 요구를 받고 opencv 나 노가다로 해결을 해 보려 하는데

알씨나 포토샵같은데서 보면 Contrast (대비) 조절하는 바가 있고.. 뭐 알씨같은 경우 -100 에서 100 사이로 조절이 가능한데요

하루종일 찾아봐도 g(i, j) = a * f(i, j) + b .. 같은 공식밖에 없고

그래프 스트래치같은 경우도 제가 뭔가 임의의 수를 가지고 제어하는게 아니고.. 해서 방향도 못잡겠네요.

알씨같은데에서 "대비 60으로 조절" 이라는 알고리즘이 어떻게 되거나 무슨 뜻인지 아시는분 계신가요?

답변해주시는분, 봐주시는분 모두 감사드립니다.
Darklake (720 포인트) 님이 2017년 7월 7일 질문

1개의 답변

0 추천
OpenCV는 적용하려면 최소 1~2주 공부하고 가야 하고요.

콘트라스트만 변경할 거면 아래 함수가 좋을 듯 싶네요. 루프를 도는 소스도 많지만, 그러면 엄청 느립니다.

/**
 *
 * @param bmp input bitmap
 * @param contrast 0..10 1 is default
 * @param brightness -255..255 0 is default
 * @return new bitmap
 */
public static Bitmap changeBitmapContrastBrightness(Bitmap bmp, float contrast, float brightness)
{
    ColorMatrix cm = new ColorMatrix(new float[]
            {
                contrast, 0, 0, 0, brightness,
                0, contrast, 0, 0, brightness,
                0, 0, contrast, 0, brightness,
                0, 0, 0, 1, 0
            });

    Bitmap ret = Bitmap.createBitmap(bmp.getWidth(), bmp.getHeight(), bmp.getConfig());

    Canvas canvas = new Canvas(ret);

    Paint paint = new Paint();
    paint.setColorFilter(new ColorMatrixColorFilter(cm));
    canvas.drawBitmap(bmp, 0, 0, paint);

    return ret;
}

참고: https://stackoverflow.com/questions/12891520/how-to-programmatically-change-contrast-of-a-bitmap-in-android
Will Kim (43,170 포인트) 님이 2017년 7월 7일 답변
...