Home Reference Source Test

packages/causality-preprocessing/src/Image/colorTransforming.mixins.js

const ColorTransformingMixins = (PreprocessingClass) => class extends PreprocessingClass{
    
    colorTransform(tranformFn, sampleBuffer, channelSize){
        const R = this.R;
        return R.flatten(R.map(tranformFn, R.splitEvery(channelSize, sampleBuffer)));
    }
    /**
     * Transform color image to black on white image. This function also reduce chanel to 1.
     * @param { Array|Buffer } sampleBuffer
     * @param { Number } channelSize
     * @return { Array } image data after transform
     */
    blackWhiteTransform(sampleBuffer){
        const BlackWhiteFn = (pixel)=>{
            let pixelValue = (pixel[0] + pixel[1] +pixel[2])/3;
            return ~~pixelValue;
        };
        return this.colorTransform(BlackWhiteFn, sampleBuffer, 4);
    }

    oneBitTransform(sampleBuffer){
        const BlackWhiteFn = (pixel)=>{
            let pixelValue = (pixel[0] + pixel[1] +pixel[2])/3;
            return pixelValue>127?1:0;
        };
        return this.colorTransform(BlackWhiteFn, sampleBuffer, 4);
    }
};

export default ColorTransformingMixins;