Em vários casos, pode ser necessário converter as imagens RGB para tons de cinza ou preto e branco, por exemplo, no processamento de imagens, etc. . Além disso, o artigo abordará explicitamente a escala de cinza e a binarização das imagens.
- API Java para converter imagens em escala de cinza
- Converter imagens em escala de cinza em Java
- Converter imagens em preto e branco com binarização
API Java para converter imagem em escala de cinza
Para converter imagens RGB em escala de cinza, usaremos Aspose.Imaging for Java. É uma API de processamento de imagem Java que permite manipular formatos de imagem populares sem problemas. Você pode baixar a API ou instalá-la usando as seguintes configurações do Maven.
<repository>
<id>AsposeJavaAPI</id>
<name>Aspose Java API</name>
<url>http://repository.aspose.com/repo/</url>
</repository>
<dependency>
<groupId>com.aspose</groupId>
<artifactId>aspose-imaging-java</artifactId>
<version>21.7</version>
<classifier>jdk16</classifier>
</dependency>
Converter uma imagem em escala de cinza em Java
A seguir estão as etapas para converter uma imagem RGB em escala de cinza em Java.
- Primeiro, carregue a imagem usando a classe Image.
- Em seguida, converta a imagem em um objeto RasterCachedImage.
- Armazene a imagem em cache usando o método RasterCachedImage.cacheData().
- Converta a imagem em escala de cinza usando o método RasterCachedImage.grayscale().
- Finalmente, salve a imagem usando o método RasterCachedImage.save(String).
O exemplo de código a seguir mostra como converter uma imagem em escala de cinza usando Java.
// Carregar uma imagem em uma instância de Image
try (Image image = Image.load("aspose-logo.jpg"))
{
// Transmita a imagem para RasterCachedImage
RasterCachedImage rasterCachedImage = (RasterCachedImage) image;
// Verifique se a imagem está em cache
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 resultante
rasterCachedImage.save("Grayscaling_out.jpg");
}
Imagem de entrada
Segue-se uma imagem de exemplo utilizada neste artigo.
Convertido para escala de cinza
A seguir está a imagem após a conversão para escala 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 Java
A seguir estão as etapas para realizar a binarização em uma imagem usando um limite fixo.
- Primeiro, carregue a imagem usando a classe Image.
- Em seguida, converta a imagem em um objeto RasterCachedImage.
- Armazene a imagem em cache usando o método RasterCachedImage.cacheData().
- Converta a imagem em preto e branco usando o método RasterCachedImage.binarizeFixed().
- Finalmente, salve a imagem usando o método RasterCachedImage.save(String).
O código Java a seguir aplica a binarização a uma imagem e a converte em preto e branco.
// Carregar uma imagem em uma instância de Image
try (Image image = Image.load("aspose-logo.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();
}
// Binarize a imagem com limite fixo predefinido e salve a imagem resultante
rasterCachedImage.binarizeFixed((byte) 100);
rasterCachedImage.save("BinarizationWithFixedThreshold_out.jpg");
}
Binarização com Otsu Threshold em Java
A seguir estão as etapas para converter uma imagem em preto e branco com limite Otsu.
- Primeiro, carregue a imagem usando a classe Image.
- Transmita a imagem em um objeto RasterCachedImage.
- Armazene a imagem em cache usando o método RasterCachedImage.cacheData().
- Converta a imagem em preto e branco usando o método RasterCachedImage.binarizeOtsu().
- Finalmente, salve a imagem usando o método RasterCachedImage.save(String).
O exemplo de código a seguir mostra como converter uma imagem em preto e branco com limite Otsu usando Java.
// Carregar uma imagem em uma instância de Image
try (Image image = Image.load("aspose-logo.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();
}
// Binarizar imagem com Otsu Thresholding
rasterCachedImage.binarizeOtsu();
// Salve a imagem resultante
rasterCachedImage.save("BinarizationWithOtsuThreshold_out.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 Java. 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 Java usando documentação. Além disso, você pode compartilhar suas dúvidas conosco por meio do nosso fórum.