C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: TIFFファイルの「ビットの深さ」の変換


(過去ログ 169 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■97434 / inTopicNo.1)  TIFFファイルの「ビットの深さ」の変換
  
□投稿者/ tan (1回)-(2021/05/12(Wed) 19:24:42)

分類:[C#] 

OS:Windows10(64bit)
アプリ:デスクトップFormアプリ
言語:C#

TIFFファイルの「ビットの深さ」の変換について教えてください。

次のコードは、TIFファイルの圧縮方式を「PackBits」に変換しています。
ビットの深さを「モノクロ」に変換したいのですが、
どのような実装が必要になるのか、教えていただけないでしょうか。

参考例などありましたらアドバイスいただけますと幸いです。

-------------------------------
using System.Drawing.Imaging;

// EncoderParametersを設定する
var parameters = new EncoderParameters(2);
parameters.Param[0] = new EncoderParameter(Encoder.ColorDepth, 1L);
parameters.Param[1] = new EncoderParameter(Encoder.Compression, (long)EncoderValue.CompressionRle);

// ImageCodecInfoを取得する
ImageFormat imageFormat = ImageFormat.Tiff;
ImageCodecInfo imageCodecInfo = ImageCodecInfo.GetImageEncoders().FirstOrDefault(x => x.FormatID == imageFormat.Guid);

// 画像形式を変換する
var exiFileNameLocalRle = Path.ChangeExtension(exiFileNameLocal, "") + "_rle." + Path.GetExtension(exiFileNameLocal);
using (Bitmap bitmap = new Bitmap(exiFileNameLocal))
{
bitmap.Save(exiFileNameLocalRle, imageCodecInfo, parameters);
}
-------------------------------

引用返信 編集キー/
■97436 / inTopicNo.2)  Re[1]: TIFFファイルの「ビットの深さ」の変換
□投稿者/ 魔界の仮面弁士 (3094回)-(2021/05/13(Thu) 09:56:05)
No97434 (tan さん) に返信
> ビットの深さを「モノクロ」に変換したいのですが、

Bitmap.GetPixel メソッドで得た各座標の色に対して、
それぞれの明るさを Color.GetBrightness メソッドで調査し、
明るければ白、暗ければ黒に傾ける方法があります。
下記を参考にしてみてください。
https://dobon.net/vb/dotnet/graphics/1bpp.html

GetPixel で遅い場合は、LockBits メソッドを使う事ができます。
https://dobon.net/vb/dotnet/graphics/colorbalance.html#lockbits


あるいは OpenCV で実装することもできます。
Cv2.CvtColor でグレーカラー変換してから、Cv2.Threshold を呼び出します。
OpenCvSharp4.Windows の実装例が下記にあります。
https://maywork.net/computer/opencvsharp-to-threshold-otsu/
引用返信 編集キー/
■97462 / inTopicNo.3)  Re[2]: TIFFファイルの「ビットの深さ」の変換
□投稿者/ tan (2回)-(2021/05/19(Wed) 11:25:49)
No97436 (魔界の仮面弁士 さん) に返信
> ■No97434 (tan さん) に返信
>>ビットの深さを「モノクロ」に変換したいのですが、
>
> Bitmap.GetPixel メソッドで得た各座標の色に対して、
> それぞれの明るさを Color.GetBrightness メソッドで調査し、
> 明るければ白、暗ければ黒に傾ける方法があります。
> 下記を参考にしてみてください。
> https://dobon.net/vb/dotnet/graphics/1bpp.html
>
> GetPixel で遅い場合は、LockBits メソッドを使う事ができます。
> https://dobon.net/vb/dotnet/graphics/colorbalance.html#lockbits
>
>
> あるいは OpenCV で実装することもできます。
> Cv2.CvtColor でグレーカラー変換してから、Cv2.Threshold を呼び出します。
> OpenCvSharp4.Windows の実装例が下記にあります。
> https://maywork.net/computer/opencvsharp-to-threshold-otsu/
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -