assign_pixel_intensity

2021年6月19日

assign_pixel_intensity()は、ピクセルの輝度を変更することができるテンプレート関数です。したがって、問題のピクセルがグレースケールピクセルの場合は、そのピクセルに単純に指定された値を割り当てます。ただし、ピクセルがグレースケールピクセルではない場合、ピクセルをHSI色空間に変換し、Iチャネルを指定の強度に設定してから、このHSI値を元のピクセルの色空間に変換します。 

#include <dlib / pixel.h>

    template <
        typename P,
        typename T
        >
    inline void assign_pixel_intensity (
        P& dest,
        const T& new_intensity
    );
    /*!
        requires
            - pixel_traits<P> must be defined
            - pixel_traits<T> must be defined
        ensures
            - This function changes the intensity of the dest pixel. So if the pixel in 
              question is a grayscale pixel then it simply assigns that pixel with the 
              value of get_pixel_intensity(new_intensity).  However, if the pixel is not 
              a grayscale pixel then it converts the pixel to the HSI color space and sets 
              the I channel to the given intensity and then converts this HSI value back to 
              the original pixel's color space.
            - Note that we don't necessarily have #get_pixel_intensity(dest) == get_pixel_intensity(new_intensity) 
              due to vagaries of how converting to and from HSI works out.
            - if (the dest pixel has an alpha channel) then
                - #dest.alpha == dest.alpha
    !*/

Posted by kinya