16비트 픽셀 이미지의 회색조 변환 방법
이미지 처리에서 그레이스케일 변환은 일반적으로 각 픽셀의 빨간색, 녹색, 파란색(RGB) 구성 요소를 밝기 값으로 설정합니다. 그러나 픽셀당 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의 각 픽셀을 통과하여 빨간색 구성 요소를 밝기 값으로 설정하고 녹색 및 파란색 구성 요소를 0으로 설정하여 효과적으로 회색조로 변환합니다. 결과 비트맵 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!