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.
- API Java để chuyển đổi hình ảnh màu sang thang độ xám
- Chuyển đổi hình ảnh sang thang độ xám trong Java
- Chuyển đổi hình ảnh sang đen trắng với Binarization
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.
- Đầu tiên, tải hình ảnh bằng lớp Hình ảnh.
- Sau đó, truyền hình ảnh vào một đối tượng RasterCachedImage.
- Lưu vào bộ nhớ cache của hình ảnh bằng phương thức RasterCachedImage.cacheData().
- Chuyển đổi hình ảnh sang thang độ xám bằng phương pháp RasterCachedImage.grayscale().
- Cuối cùng, lưu hình ảnh bằng phương thức RasterCachedImage.save (String).
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.
Được chuyển đổi sang thang độ xám
Sau đây là hình ảnh sau khi chuyển đổi sang 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.
- Đầu tiên, tải hình ảnh bằng lớp Hình ảnh.
- Sau đó, truyền hình ảnh vào một đối tượng RasterCachedImage.
- Lưu vào bộ nhớ cache của hình ảnh bằng phương thức RasterCachedImage.cacheData().
- Chuyển đổi hình ảnh sang màu đen trắng bằng phương pháp RasterCachedImage.binarizeFixed().
- Cuối cùng, lưu hình ảnh bằng phương thức RasterCachedImage.save (String).
Đ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.
- Đầu tiên, tải hình ảnh bằng lớp Hình ảnh.
- Truyền hình ảnh vào đối tượng RasterCachedImage.
- Lưu vào bộ nhớ cache của hình ảnh bằng phương thức RasterCachedImage.cacheData().
- Chuyển đổi hình ảnh sang màu đen trắng bằng phương pháp RasterCachedImage.binarizeOtsu().
- Cuối cùng, lưu hình ảnh bằng phương thức RasterCachedImage.save (String).
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.