[java] 이미지 색상 모델 변환

이미지 처리 애플리케이션을 개발하는 경우 종종 이미지의 색상 모델을 변환해야 할 때가 있습니다. 예를 들어, RGB 색상 모델에서 HSL 색상 모델로 변환하거나 그 반대로 변환하는 작업이 필요할 수 있습니다.

Java에서는 BufferedImage 클래스를 사용하여 이미지를 로드하고 픽셀 데이터에 접근할 수 있습니다. 이미지의 픽셀 데이터를 가져와서 각 픽셀의 RGB 값을 사용하여 HSL 값으로 변환하는 알고리즘을 구현할 수 있습니다.

다음은 Java를 사용하여 RGB에서 HSL로의 변환 코드의 간단한 예시입니다.

import java.awt.Color;

public class ColorConverter {
    public static float[] rgbToHsl(int rgb) {
        int r = (rgb >> 16) & 0xFF;
        int g = (rgb >> 8) & 0xFF;
        int b = rgb & 0xFF;

        float[] hsl = new float[3];
        float rNormalized = r / 255f;
        float gNormalized = g / 255f;
        float bNormalized = b / 255f;

        float cMax = Math.max(Math.max(rNormalized, gNormalized), bNormalized);
        float cMin = Math.min(Math.min(rNormalized, gNormalized), bNormalized);
        float delta = cMax - cMin;

        if (delta == 0) {
            hsl[0] = 0;
        } else if (cMax == rNormalized) {
            hsl[0] = 60 * (((gNormalized - bNormalized) / delta) % 6);
        } else if (cMax == gNormalized) {
            hsl[0] = 60 * (((bNormalized - rNormalized) / delta) + 2);
        } else if (cMax == bNormalized) {
            hsl[0] = 60 * (((rNormalized - gNormalized) / delta) + 4);
        }

        hsl[2] = (cMax + cMin) / 2;

        if (delta == 0) {
            hsl[1] = 0;
        } else {
            hsl[1] = delta / (1 - Math.abs(2 * hsl[2] - 1));
        }

        return hsl;
    }
}

위 코드는 RGB 값을 HSL 값으로 변환하는 메소드인 rgbToHsl을 보여줍니다. 이 메소드는 주어진 RGB 값을 HSL 값으로 변환하여 결과를 float 배열로 반환합니다.

이 코드를 이용하면 Java에서 이미지의 색상 모델을 쉽게 변환할 수 있습니다.

참고 자료