converter imagem para escala de cinza C#

Em vários casos, pode ser necessário converter as imagens coloridas em tons de cinza ou preto e branco, como no processamento de imagens etc. Portanto, neste artigo, você aprenderá como converter uma imagem em tons de cinza usando C#. Além disso, o artigo abordará a escala de cinza e a binarização das imagens explicitamente.

API C# para converter imagem em escala de cinza

Para converter imagens de cores RGB em escala de cinza, usaremos Aspose.Imaging for .NET. É uma poderosa API de processamento de imagem que permite manipular formatos de imagem populares sem problemas. Você pode baixar a API ou instalá-la usando NuGet.

PM> Install-Package Aspose.Imaging

Converter uma imagem em escala de cinza em C#

A seguir estão as etapas para converter uma imagem colorida em escala de cinza em C#.

O exemplo de código a seguir mostra como converter uma imagem em escala de cinza usando C#.

// Carregar uma imagem em uma instância da classe Image
using (Image image = Image.Load("aspose.jpg"))
{
    // Transmita a imagem para RasterCachedImage e verifique se a imagem está armazenada em cache
    RasterCachedImage rasterCachedImage = (RasterCachedImage)image;
    if (!rasterCachedImage.IsCached)
    {
        // Cache de imagem se ainda não estiver em cache
        rasterCachedImage.CacheData();
    }

    // Transforme a imagem em sua representação em escala de cinza
    rasterCachedImage.Grayscale();
    
    // Salve a imagem
    rasterCachedImage.Save("grayscaled.jpg");
}

Imagem de entrada

Segue-se uma imagem de exemplo utilizada neste artigo.

imagem para escala de cinza C#

Convertido para escala de cinza

A seguir está a imagem após a conversão para escala de cinza.

imagem em tons de cinza

Converter imagem em preto e branco com binarização

Na binarização, cada pixel em uma imagem pode ter apenas dois valores possíveis; 0 ou 1. Aqui, 0 denota a ausência e 1 denota a presença da cor. Aspose.Imaging suporta dois métodos de binarização, ou seja, binarização com limite fixo e binarização com limite Otsu.

Binarização com limite fixo em C#

A seguir estão as etapas para realizar a binarização em uma imagem usando um limite fixo.

O código C# a seguir aplica a binarização a uma imagem e a converte em preto e branco.

// Carregar uma imagem em uma instância da classe Image
using (Image image = Image.Load("aspose.jpg"))
{
    // Transmita a imagem para RasterCachedImage e verifique se a imagem está armazenada em cache
    RasterCachedImage rasterCachedImage = (RasterCachedImage)image;
    if (!rasterCachedImage.IsCached)
    {
        // Cache de imagem se ainda não estiver em cache
        rasterCachedImage.CacheData();
    }

    // Transforme a imagem em sua representação binária
    rasterCachedImage.BinarizeFixed(100);
    
    // Salve a imagem
    rasterCachedImage.Save("black and white.jpg");
}

Binarização com Otsu Threshold em C#

A seguir estão as etapas para converter uma imagem em preto e branco com limite Otsu.

O exemplo de código a seguir mostra como converter uma imagem em preto e branco com limite Otsu usando C#.

// Carregar uma imagem em uma instância da classe Image
using (Image image = Image.Load("aspose.jpg"))
{
    // Transmita a imagem para RasterCachedImage e verifique se a imagem está armazenada em cache
    RasterCachedImage rasterCachedImage = (RasterCachedImage)image;
    if (!rasterCachedImage.IsCached)
    {
        // Cache de imagem se ainda não estiver em cache
        rasterCachedImage.CacheData();
    }

    // Transforme a imagem em sua representação binária
    rasterCachedImage.BinarizeOtsu();
    
    // Salve a imagem
    rasterCachedImage.Save("black and white.jpg");
}

Obtenha uma licença de API gratuita

Você pode obter uma licença temporária gratuita para usar a API sem limitações de avaliação.

Conclusão

Neste artigo, você aprendeu como converter uma imagem em escala de cinza e preto e branco usando C#. Além disso, você viu como aplicar a binarização às imagens com limite fixo ou Otsu. Além disso, você pode explorar mais sobre a API de processamento de imagem C# usando documentação. Além disso, você pode compartilhar suas dúvidas conosco por meio do nosso fórum.

Veja também