16비트 그레이스케일 이미지 변환 기술
이 가이드에서는 RGB 구성 요소를 휘도 값으로 수동 조정하지 않고 이미지를 16비트 회색조 형식으로 변환하는 방법을 설명합니다.
새 16비트 회색조 비트맵 만들기:
가장 간단한 방법은 System.Drawing.Bitmap
매개변수와 함께 System.Drawing.Imaging.PixelFormat
생성자를 사용하는 것입니다. 이렇게 하면 원하는 16비트 회색조 형식으로 새 비트맵이 직접 생성됩니다.
<code class="language-csharp">Bitmap grayScaleBP = new System.Drawing.Bitmap(2, 2, System.Drawing.Imaging.PixelFormat.Format16bppGrayScale);</code>
이 코드 조각은 16비트 회색조의 2x2 픽셀 비트맵을 생성합니다. 필요에 따라 이미지의 크기를 조정하세요.
기존 이미지를 16비트 회색조로 변환:
기존 비트맵을 변환하려면 각 픽셀을 반복하고 색상 속성을 다시 정의해야 합니다. 가능하지만 이 방법은 큰 이미지의 경우 효율성이 떨어집니다.
<code class="language-csharp">// (Pixel iteration code would go here – omitted for brevity due to inefficiency)</code>
ColorMatrix를 사용하여 그레이스케일 변환 최적화:
훨씬 더 빠르고 효율적인 그레이스케일 변환을 위해 ColorMatrix
를 활용하세요. 이 접근 방식은 이미지의 색상 데이터에 변환 행렬을 적용하여 회색조 변환을 수행합니다.
<code class="language-csharp">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); // ... (Drawing code using attributes to apply the ColorMatrix) ... }</code>
이는 지각적으로 정확한 그레이스케일 변환을 위해 표준 휘도 가중치(.3, .59, .11)를 활용합니다. 수정된 ImageAttributes
을 사용하여 이미지를 그리려면 주석 부분을 적절한 코드로 바꾸는 것을 잊지 마세요. 이 방법은 특히 큰 이미지의 경우 픽셀 단위 조작보다 훨씬 효율적입니다.
위 내용은 이미지를 16비트 회색조로 변환하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!