上一篇博客讲述了使用LEADTOOLS的CMYK功能根据颜色从图像中去除特定部分

这篇文章建立在此之上,演示如何通过使用BalanceColorsCommand来删除一个特定的颜色。

这是需要处理的输入图像,各种颜色的文本。 前面的例子演示了删除黑色文本。 在这里,底部的红色文字也会被包括到到黑色的平面,所以它也会被删除掉。

resource (1)

此语法将BalanceColorsCommand应用于红色的参数没有权重,而绿色和蓝色的参数具有标准的权重。

    RasterCodecs codecs = new RasterCodecs();
    RasterImage image = codecs.Load(imagePath);

    BalanceColorsCommand bcc = new BalanceColorsCommand(
       new BalanceColorCommandFactor(0, 0, 0), // red
       new BalanceColorCommandFactor(0, 1, 0), // green
       new BalanceColorCommandFactor(0, 0, 1)); // blue
    bcc.Run(image);

 

下图为处理后的效果,有效地去除了红色色调。剩余的图像青色的

resource (2)

可以使用相同的过程来分离颜色平面,然后使用AddCommand重新组合它们。 但是,如果青色平面实际上是黑色平面的反色,则在执行AddOperation之前需要将其去除。

ColorSeparateCommand csc = new ColorSeparateCommand(ColorSeparateCommandType.Cmyk);
    csc.Run(image);

    csc.DestinationImage.RemovePageAt(4); // page 4 is black plane
    csc.DestinationImage.RemovePageAt(1); // page 1 is cyan plane

    AddCommand ac = new AddCommand(AddCommandType.Add);
    ac.Run(csc.DestinationImage);

    InvertCommand ic = new InvertCommand();
    ic.Run(ac.DestinationImage);
    
    AutoBinarizeCommand abc = new AutoBinarizeCommand();
    abc.Run(ac.DestinationImage);

 

这是输出的最终效果图片,黑色文本和红色文本以编程方式被删除,可以最后用于OCR。

resource (3)