chuyển đổi hình ảnh sang thang độ xám C#

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

C# API để chuyển đổi hình ảnh sang thang độ xám - Tải xuống miễn phí

Để chuyển đổi hình ảnh màu RGB sang thang độ xám, chúng tôi sẽ sử dụng Aspose.Imaging for .NET. Đây là một API xử lý hình ảnh mạnh mẽ 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 NuGet.

PM> Install-Package Aspose.Imaging

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

Sau đây là các bước để chuyển ảnh màu sang thang độ xám trong C#.

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

// Tải hình ảnh trong một phiên bản của lớp Hình ảnh
using (Image image = Image.Load("aspose.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();
    }

    // Chuyển đổi hình ảnh sang biểu diễn thang độ xám của nó
    rasterCachedImage.Grayscale();
    
    // Lưu hình ảnh
    rasterCachedImage.Save("grayscaled.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 thang độ xám C#

Đượ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

Hình ảnh thang độ xám trong C# - Đ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 ngưỡng cố định và binarization với ngưỡng Otsu.

Binarization với Ngưỡng cố định trong C#

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.

Mã C# 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 lớp Hình ảnh
using (Image image = Image.Load("aspose.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();
    }

    // Chuyển đổi hình ảnh thành biểu diễn nhị phân của nó
    rasterCachedImage.BinarizeFixed(100);
    
    // Lưu hình ảnh
    rasterCachedImage.Save("black and white.jpg");
}

C# 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 C#.

// Tải hình ảnh trong một phiên bản của lớp Hình ảnh
using (Image image = Image.Load("aspose.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();
    }

    // Chuyển đổi hình ảnh thành biểu diễn nhị phân của nó
    rasterCachedImage.BinarizeOtsu();
    
    // Lưu hình ảnh
    rasterCachedImage.Save("black and white.jpg");
}

C# Image to Grayscale 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 viết này, bạn đã học cách chuyển đổi hình ảnh sang thang độ xám và đen trắng bằng C#. 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. Hơn nữa, bạn có thể khám phá thêm về API xử lý ảnh C# bằng cách sử dụ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