Hình ảnh RGB sang java thang độ xám

Trong nhiều trường hợp khác nhau, bạn có thể cần phải chuyển đổi hình ảnh RGB sang thang độ xám hoặc đen trắng, ví dụ: trong xử lý hình ảnh, v.v. Theo đó, trong bài viết này, bạn sẽ học cách chuyển đổi hình ảnh RGB sang thang độ xám bằng Java . Hơn nữa, bài báo sẽ đề cập đến thang điểm xám và mã hóa nhị phân của hình ảnh một cách rõ ràng.

Java Color Image to Grayscale Converter - Tải xuống miễn phí

Để chuyển đổi hình ảnh RGB sang thang độ xám, chúng tôi sẽ sử dụng Aspose.Imaging for Java. Nó là một API xử lý hình ảnh Java cho phép bạn thao tác các định dạng hình ảnh phổ biến một cách liền mạch. Bạn có thể tải xuống API hoặc cài đặt nó bằng cách sử dụng các cấu hình Maven sau.

<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>

Chuyển đổi hình ảnh RGB sang thang độ xám trong Java

Sau đây là các bước để chuyển đổi hình ảnh RGB sang thang độ xám trong Java.

Mẫu mã sau đây cho thấy cách chuyển đổi hình ảnh sang thang độ xám trong Java.

// Tải hình ảnh trong một phiên bản của Hình ảnh
try (Image image = Image.load("aspose-logo.jpg"))
{
    // Truyền hình ảnh sang RasterCachedImage
    RasterCachedImage rasterCachedImage = (RasterCachedImage) image;
    
    // Kiểm tra xem hình ảnh có được lưu vào bộ nhớ đệm không
    if (!rasterCachedImage.isCached()) {
        // Bộ nhớ đệm hình ảnh nếu chưa được lưu vào bộ nhớ đệm
        rasterCachedImage.cacheData();
    }
    // Chuyển đổi hình ảnh sang biểu diễn thang độ xám của nó
    rasterCachedImage.grayscale();
    
    // Lưu hình ảnh kết quả
    rasterCachedImage.save("Grayscaling_out.jpg");
}

Hình ảnh đầu vào

Sau đây là hình ảnh mẫu được sử dụng trong bài viết này.

hình ảnh sang Java thang độ xám

Được chuyển đổi sang thang độ xám

Sau đây là hình ảnh sau khi chuyển đổi sang thang độ xám.

hình ảnh thang độ xám

Java Lưu hình ảnh dưới dạng đen trắng với Binarization

Trong mã hóa nhị phân, mỗi pixel trong một hình ảnh chỉ có thể có hai giá trị có thể có; 0 hoặc 1. Ở đây, 0 biểu thị sự vắng mặt và 1 biểu thị sự hiện diện của màu sắc. Aspose.Imaging hỗ trợ hai phương pháp binarization tức là binarization với cố định và binarization với ngưỡng Otsu.

Binarization với ngưỡng cố định

Sau đây là các bước để thực hiện mã hóa nhị phân trên một hình ảnh sử dụng ngưỡng cố định.

Đoạn mã Java sau áp dụng mã hóa nhị phân cho một hình ảnh và chuyển đổi nó thành màu đen và trắng.

// Tải hình ảnh trong một phiên bản của Hình ảnh
try (Image image = Image.load("aspose-logo.jpg"))
{
    // Truyền hình ảnh sang RasterCachedImage và Kiểm tra xem hình ảnh có được lưu vào bộ nhớ đệm không                
    RasterCachedImage rasterCachedImage = (RasterCachedImage)image;
    if (!rasterCachedImage.IsCached)
    {
        // Hình ảnh trong bộ nhớ cache nếu chưa được lưu trong bộ nhớ cache
        rasterCachedImage.CacheData();
    }

    // Binarize hình ảnh với ngưỡng cố định được xác định trước và Lưu hình ảnh kết quả                
    rasterCachedImage.binarizeFixed((byte) 100);
    rasterCachedImage.save("BinarizationWithFixedThreshold_out.jpg");
}

Binarization với Otsu Threshold

Sau đây là các bước để chuyển một hình ảnh sang đen trắng với ngưỡng Otsu.

Mẫu mã sau đây cho thấy cách chuyển đổi một hình ảnh sang màu đen và trắng với ngưỡng Otsu bằng cách sử dụng Java.

// Tải hình ảnh trong một phiên bản của Hình ảnh
try (Image image = Image.load("aspose-logo.jpg"))
{
    // Truyền hình ảnh sang RasterCachedImage và Kiểm tra xem hình ảnh có được lưu vào bộ nhớ đệm không
    RasterCachedImage rasterCachedImage = (RasterCachedImage) image;
    if (!rasterCachedImage.isCached())
    {
        // Bộ nhớ đệm hình ảnh nếu chưa được lưu vào bộ nhớ đệm
        rasterCachedImage.cacheData();
    }
    // Binarize hình ảnh với Otsu Thresholding
    rasterCachedImage.binarizeOtsu();
  
    // Lưu hình ảnh kết quả
    rasterCachedImage.save("BinarizationWithOtsuThreshold_out.jpg");
}

Color Image to Grayscale Java Converter - Nhận giấy phép miễn phí

Bạn có thể nhận giấy phép tạm thời miễn phí để sử dụng API mà không có giới hạn đánh giá.

Sự kết luận

Trong bài này, bạn đã học cách chuyển đổi ảnh màu sang thang độ xám và đen trắng bằng Java. Hơn nữa, bạn đã thấy cách áp dụng mã hóa nhị phân cho các hình ảnh có ngưỡng cố định hoặc Otsu. Ngoài ra, bạn có thể khám phá thêm về API xử lý ảnh Java bằng tài liệu. Ngoài ra, bạn có thể chia sẻ các thắc mắc của mình với chúng tôi qua diễn đàn của chúng tôi.

Xem thêm