首頁 > 後端開發 > C++ > 如何使用 16 位元每像素格式將影像轉換為灰階?

如何使用 16 位元每像素格式將影像轉換為灰階?

Susan Sarandon
發布: 2025-01-17 13:06:10
原創
639 人瀏覽過

How Can I Convert an Image to Grayscale Using a 16-Bit per Pixel Format?

16位元像素影像的灰階轉換方法

影像處理中,灰階轉換通常會將每個像素的紅、綠、藍 (RG​​B) 分量設定為亮度值。但是,有一種方法可以使用每像素16位元的格式將影像轉換為灰階。

使用PixelFormat建構子

使用此方法將影像轉換為灰度,您可以使用Bitmap類別的PixelFormat建構子。例如下:

<code class="language-c#">Bitmap grayScaleBP = new System.Drawing.Bitmap(2, 2, System.Drawing.Imaging.PixelFormat.Format16bppGrayScale);</code>
登入後複製

這將建立一個新的點陣圖,大小為2x2像素,像素格式為每像素16位元的灰階。

將現有影像轉換為灰階

要將現有影像轉換為灰度,您可以使用循環遍歷像素並將它們設定為灰階顏色。例如下:

<code class="language-c#">// 代码片段略,此处需要补充完整代码以实现灰度转换</code>
登入後複製

這段程式碼遍歷點陣圖c中的每個像素,將紅色分量設定為亮度值,並將綠色和藍色分量設為零,從而有效地將其轉換為灰階。產生的點陣圖d包含原始影像的灰階版本。

使用ColorMatrix的快速方法

使用ColorMatrix轉換灰階影像速度較快:

<code class="language-c#">public static Bitmap MakeGrayscale3(Bitmap original)
{
    // 创建一个与原始图像大小相同的空白位图
    Bitmap newBitmap = new Bitmap(original.Width, original.Height);

    // 从新图像获取图形对象
    using (Graphics g = Graphics.FromImage(newBitmap)) {
        // 创建灰度ColorMatrix
        ColorMatrix colorMatrix = new ColorMatrix(
            new float[][]
            {
                new float[] {.3f, .3f, .3f, 0, 0},
                new float[] {.59f, .59f, .59f, 0, 0},
                new float[] {.11f, .11f, .11f, 0, 0},
                new float[] {0, 0, 0, 1, 0},
                new float[] {0, 0, 0, 0, 1}
            });

        // 创建一些图像属性
        using (ImageAttributes attributes = new ImageAttributes()) {
            // 设置颜色矩阵属性
            attributes.SetColorMatrix(colorMatrix);

            // 使用灰度颜色矩阵在新图像上绘制原始图像
            g.DrawImage(original, new Rectangle(0, 0, original.Width, original.Height),
                        0, 0, original.Width, original.Height, GraphicsUnit.Pixel, attributes);
        }
    }

    // 返回新的位图
    return newBitmap;
}</code>
登入後複製

此方法使用ColorMatrix執行灰階轉換,這比手動遍歷像素快得多。

以上是如何使用 16 位元每像素格式將影像轉換為灰階?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板