バーコードのデコードを改善するための C# 画像補正フィルタの使用
IronBarcode には、ぼやけたバーコード画像や不完全なバーコード画像をプログラムで補正する SharpenFilter や ContrastFilter などの組み込み画像補正フィルターが用意されており、外部の画像編集ソフトウェアを使用したり画像を再キャプチャしたりしなくても読み取り精度が向上します。
すべての画像が完璧というわけではなく、画質の悪さはIronBarcodeでのバーコード読み取りを成功させない主な要因の一つです。 IronBarcodeは、画像の再キャプチャや外部の画像補正ソフトウェアを使用する代わりに、プログラムによって画質を向上させる組み込みフィルタを提供します。 これらのフィルタは、IronBarcodeが難しい画像を読み取り、全体的な精度を向上させるのに役立ちます。
IronBarcodeで利用可能な画像補正フィルター、それらが画像に与える影響、およびそれらの適用方法についてさらにお読みください。 より包括的なバーコード読み取り技術については、バーコード読み取りチュートリアルをご覧ください。
クイックスタート: シャープネスとコントラストのフィルターを適用してバーコードの読み取りを改善する
たった 1 ステップで、BarcodeReaderOptions の ImageFilterCollection を使用して、IronBarcode の SharpenFilter と ContrastFilter を適用します。 これは、最小限のセットアップと外部ツールの必要性ゼロでBarCodeスキャンを改善します。
-
IronBarcode をNuGetパッケージマネージャでインストール
PM > Install-Package BarCode -
このコード スニペットをコピーして実行します。
BarcodeResults results = IronBarCode.BarcodeReader.Read("input.png", new IronBarCode.BarcodeReaderOptions { ImageFilters = new IronBarCode.ImageFilterCollection() { new IronBarCode.SharpenFilter(3.5f), new IronBarCode.ContrastFilter(2.0f) } }); -
実際の環境でテストするためにデプロイする
今日プロジェクトで IronBarcode を使い始めましょう無料トライアル
最小限のワークフロー(5ステップ)
- 画像補正フィルターを使用するには、C# ライブラリをダウンロードしてください。
- 利用可能なすべての画像補正フィルターを探索します
- カスタム値で各フィルタを設定する
- 不完全な画像サンプルにフィルタを適用
- 強化された画像からバーコードの値を取得する
バーコードの読み取りを向上させるために画像フィルタを適用するにはどうすればよいですか?
フィルターを適用するには、ImageFilterCollection クラスをインスタンス化し、各フィルターのインスタンスを個別に作成します。 次に、オブジェクトを BarcodeReaderOptions オブジェクトの ImageFilters プロパティに割り当てます。 サンプル画像とともに、オプション オブジェクトを Read メソッドに渡します。 高度なインストールオプションについては、NuGetパッケージガイドをご覧ください。
以下の画像をサンプル画像として使用してください。
サンプル画像
画像がかなりぼやけて見えます。 しかし、明るさは許容範囲で、白黒の色は区別できます。 したがって、バーコードの読みやすさを向上させるために、少なくともSharpenFilterとContrastFilterを適用してください。 以下のコードスニペットを参照して、画像にフィルタを適用し、それを読み取り、結果をコンソールに表示します。
:path=/static-assets/barcode/content-code-examples/how-to/image-correction-apply-filter.cs
using IronBarCode;
using System;
BarcodeReaderOptions options = new BarcodeReaderOptions()
{
// Choose which filters are to be applied (in order)
ImageFilters = new ImageFilterCollection()
{
new SharpenFilter(3.5f),
new ContrastFilter(2)
},
};
// Apply options and read the barcode
BarcodeResults results = BarcodeReader.Read("sample.png", options);
// Write the result value to console
foreach (BarcodeResult result in results)
{
Console.WriteLine(result.Text);
}
Imports IronBarCode
Imports System
Private options As New BarcodeReaderOptions() With {
.ImageFilters = New ImageFilterCollection() From {
New SharpenFilter(3.5F),
New ContrastFilter(2)
}
}
' Apply options and read the barcode
Private results As BarcodeResults = BarcodeReader.Read("sample.png", options)
' Write the result value to console
For Each result As BarcodeResult In results
Console.WriteLine(result.Text)
Next result
上のコード・スニペットは、フィルタを適用し、BarCodeを読み取り、フィルタリングされた画像をディスクにエクスポートします。 サンプル画像とフィルター画像の比較を以下に示します。
サンプル画像
フィルタリングされたサンプル
IronBarcodeではどのような画像補正フィルタが利用できますか?
IronBarcodeは、特に画像補正のために設計された複数の画像フィルターを提供しています。 これらのフィルタは、不完全な BarCode 画像の読み取りを支援し、読み取り精度を向上させます。 しかし、適切なフィルタを選択し、多すぎるフィルタの使用や間違ったフィルタの使用によるパフォーマンスの問題を避けるために、これらのフィルタがどのように機能するかを理解してください。 利用可能なフィルタは次のとおりです:
AdaptiveThresholdFilterBinaryThresholdFilterBrightnessFilterContrastFilterInvertFilterSharpenFilterErodeFilterDilateFilterHistogramEqualizationFilter- Blur Filters
GaussianBlurFilterBilateralFilterMedianBlurFilter
フィルターが適用される順序は、ImageFilterCollection内の配置に基づいています。 これらのフィルタの詳細なAPIドキュメントについては、API Referenceをご覧ください。
適応しきい値フィルターはどのように機能しますか?
AdaptiveThresholdFilterはIronBarcodeで利用可能なフィルターで、Bradley Adaptive Threshold テクニックを画像に適用し、画像を二値化するためのしきい値を自動的に決定します。 このフィルターは照明が不均一で背景強度が変化する画像に最適です。
:path=/static-assets/barcode/content-code-examples/how-to/image-correction-adaptive-threshold.cs
using IronBarCode;
BarcodeReaderOptions options = new BarcodeReaderOptions()
{
// Choose which filters are to be applied (in order)
ImageFilters = new ImageFilterCollection(true) {
new AdaptiveThresholdFilter(0.9f),
},
};
// Apply options and read the barcode
BarcodeResults results = BarcodeReader.Read("sample.png", options);
// Export file to disk
results.ExportFilterImagesToDisk("adaptiveThreshold_0.9.png");
Imports IronBarCode
Private options As New BarcodeReaderOptions() With {
.ImageFilters = New ImageFilterCollection(True) From {New AdaptiveThresholdFilter(0.9F)}
}
' Apply options and read the barcode
Private results As BarcodeResults = BarcodeReader.Read("sample.png", options)
' Export file to disk
results.ExportFilterImagesToDisk("adaptiveThreshold_0.9.png")
以下は異なる値を使用してフィルターを適用した結果です。
デフォルト値
0.9の値
コンストラクタは、設定のための追加パラメータを受け付けます:
Upper: しきい値の上部 (白) の色。Lower: しきい値の下限 (黒) 色。Threshold: 2値化のしきい値 (0.0-1.0)。Rectangle: プロセッサを適用する長方形領域。
上の出力画像に示されているように、画像は黒と白の色だけを持つように2値化されています。 バーコードの読み取りにはまだ理想的ではないようですが、フィルターは組み合わせて使用する必要があります。 最良の結果を得るために、パラメータ感度を試してください。
バイナリしきい値フィルターはどのように機能しますか?
BinaryThresholdFilter は、与えられたしきい値でピクセルを分割し、色成分の輝度を比較することによって画像をフィルタリングします。 AdaptiveThresholdFilter と同様に、このフィルタは、正しく使用しないと、新しいノイズや不要なノイズが発生する可能性があります。 ただし、IronBarcodeはフィルタのプロパティにデフォルト値を設定しています。
AdaptiveThresholdFilter と同様に、BinaryThresholdFilter は設定用に同じ追加パラメータを受け入れます。
Upper: しきい値の上部 (白) の色。Lower: しきい値の下限 (黒) 色。Threshold: 2値化のしきい値 (0.0-1.0)。Rectangle: プロセッサを適用する長方形領域。
:path=/static-assets/barcode/content-code-examples/how-to/image-correction-binary-threshold.cs
using IronBarCode;
BarcodeReaderOptions options = new BarcodeReaderOptions()
{
// Choose which filters are to be applied (in order)
ImageFilters = new ImageFilterCollection(true) {
new BinaryThresholdFilter(0.9f)
},
};
// Apply options and read the barcode
BarcodeResults results = BarcodeReader.Read("sample.png", options);
// Export file to disk
results.ExportFilterImagesToDisk("binaryThreshold_0.9.png");
Imports IronBarCode
Private options As New BarcodeReaderOptions() With {
.ImageFilters = New ImageFilterCollection(True) From {New BinaryThresholdFilter(0.9F)}
}
' Apply options and read the barcode
Private results As BarcodeResults = BarcodeReader.Read("sample.png", options)
' Export file to disk
results.ExportFilterImagesToDisk("binaryThreshold_0.9.png")
以下はサンプル画像にフィルターを適用した出力例です。
デフォルト値
0.9の値
上の出力画像を見ると、サンプルは白黒に2値化されています。 しかし、バーコードバーが除去され、新たなノイズが混入しているため、このフィルタがこの画像に適していないことは明らかです。 難しい BarCode シナリオの処理については、troubleshooting guide for unrecognized barcodes を参照してください。
バーコードの読み取りを向上させるために画像の明るさを調整するにはどうすればよいですか?
BrightnessFilterは、IronBarcodeの画像フィルターコレクションでのもう一つの重要なフィルターです。 名前が示すように、このフィルターはバーコード画像の明るさを調整します。 このコンストラクタへの入力は、出力画像の明るさの量を変化させます。 デフォルト値は1で、画像は変更されません。 0を指定すると真っ黒な画像になり、1を超えると明るい画像になります。
:path=/static-assets/barcode/content-code-examples/how-to/image-correction-brightness.cs
using IronBarCode;
BarcodeReaderOptions options = new BarcodeReaderOptions()
{
// Choose which filters are to be applied (in order)
ImageFilters = new ImageFilterCollection(true) {
new BrightnessFilter(1.5f),
},
};
// Apply options and read the barcode
BarcodeResults results = BarcodeReader.Read("sample.png", options);
// Export file to disk
results.ExportFilterImagesToDisk("brightness_1.5.png");
Imports IronBarCode
Private options As New BarcodeReaderOptions() With {
.ImageFilters = New ImageFilterCollection(True) From {New BrightnessFilter(1.5F)}
}
' Apply options and read the barcode
Private results As BarcodeResults = BarcodeReader.Read("sample.png", options)
' Export file to disk
results.ExportFilterImagesToDisk("brightness_1.5.png")
以下はこのフィルターをサンプル入力に適用した後の出力画像です。
デフォルト値
1.5 値
バーコード画像を強調するためにコントラスト フィルターを使用するには?
ContrastFilterは、画像のコントラストのレベルを調整します。 画像のコントラストは、画像中のさまざまな要素間の色の強度の違いを指します。 コントラストレベルの向上は、詳細の視認性を向上させ、画像を鮮やかで印象的なものにし、コントラストを減少させると、画像をより柔らかく抑えたものにします。 バーコードのカスタマイズの詳細については、バーコードスタイルのカスタマイズのガイドを参照してください。
デフォルト値は1で、画像は変更されません。 値0は完全なグレー画像を作成し、値1以上は画像のコントラストを増加させます。
:path=/static-assets/barcode/content-code-examples/how-to/image-correction-contrast.cs
using IronBarCode;
BarcodeReaderOptions options = new BarcodeReaderOptions()
{
// Choose which filters are to be applied (in order)
ImageFilters = new ImageFilterCollection(true) {
new ContrastFilter(1.5f),
},
};
// Apply options and read the barcode
BarcodeResults results = BarcodeReader.Read("sample.png", options);
// Export file to disk
results.ExportFilterImagesToDisk("contrast_1.5.png");
Imports IronBarCode
Private options As New BarcodeReaderOptions() With {
.ImageFilters = New ImageFilterCollection(True) From {New ContrastFilter(1.5F)}
}
' Apply options and read the barcode
Private results As BarcodeResults = BarcodeReader.Read("sample.png", options)
' Export file to disk
results.ExportFilterImagesToDisk("contrast_1.5.png")
このフィルターをサンプル入力に適用すると、以下の画像が生成されます。
デフォルト値
1.5 値
いつ反転フィルタを使用すべきですか?
このフィルタは、画像内の色を反転させ、白が黒に、黒が白になるように反対色にします。背景色のある BarCode 画像を読み取るときに特に便利です。 BinaryThresholdFilterとは異なり、このフィルタは感度を指定することなく直接色を反転します。 さらに、このフィルタはCropRectangleと一緒に使うことで、画像全体の色を反転させるのではなく、画像の中で色の反転が必要な場所を指定することができます。 作物領域の指定については、作物領域チュートリアルをご覧ください。
:path=/static-assets/barcode/content-code-examples/how-to/image-correction-invert.cs
using IronBarCode;
BarcodeReaderOptions options = new BarcodeReaderOptions()
{
// Choose which filters are to be applied (in order)
ImageFilters = new ImageFilterCollection(true) {
new InvertFilter(),
},
};
// Apply options and read the barcode
BarcodeResults results = BarcodeReader.Read("sample.png", options);
// Export file to disk
results.ExportFilterImagesToDisk("invert.png");
Imports IronBarCode
Private options As New BarcodeReaderOptions() With {
.ImageFilters = New ImageFilterCollection(True) From {New InvertFilter()}
}
' Apply options and read the barcode
Private results As BarcodeResults = BarcodeReader.Read("sample.png", options)
' Export file to disk
results.ExportFilterImagesToDisk("invert.png")
下の出力画像は、サンプルの入力画像にこのフィルタを適用した結果です。
オリジナル画像
反転
鮮明化フィルタを使用して、ぼやけた BarCode 画像を修正するにはどうすればよいですか?
IronBarcodeはシャープフィルターを提供します。 このフィルターは画像のシャープネスを強化し、ぼやけた画像を処理する際に非常に有用です。 このフィルタを操作して、フィルタオブジェクトをインスタンス化するときにシグマ値を調整することで、画像のシャープネスを調整します。 デフォルト値は3です。シグマ値を増やすと画像のシャープネスが向上します。 その他のパフォーマンス最適化オプションについては、読書速度オプションのガイドをご覧ください。
:path=/static-assets/barcode/content-code-examples/how-to/image-correction-sharpen.cs
using IronBarCode;
using System;
BarcodeReaderOptions options = new BarcodeReaderOptions()
{
// Choose which filters are to be applied (in order)
ImageFilters = new ImageFilterCollection(true) {
new SharpenFilter(0.5f),
},
};
// Apply options and read the barcode
BarcodeResults results = BarcodeReader.Read("sample.png", options);
// Export file to disk
results.ExportFilterImagesToDisk("sharpen_0.5.png");
Imports IronBarCode
Imports System
Private options As New BarcodeReaderOptions() With {
.ImageFilters = New ImageFilterCollection(True) From {New SharpenFilter(0.5F)}
}
' Apply options and read the barcode
Private results As BarcodeResults = BarcodeReader.Read("sample.png", options)
' Export file to disk
results.ExportFilterImagesToDisk("sharpen_0.5.png")
The image below is the sharpened version of the sample input image.
デフォルト値
0.5の値
上の画像と元の画像を比較すると、より鮮明に表示され、IronBarcodeを使用したバーコードの読み取りに役立ちます。 ほとんどの場合、 SharpenFilterは常に ImageFilterCollection クラス内の他のフィルターと一緒に適用されます。
エロード フィルターは何に使用されますか?
ErodeFilterは、微小なホワイトノイズを除去し、図形のエッジ付近のピクセルを除去することでBarCodeバーを太くします。このフィルタは、バーコードの背景に白い斑点が多い場合や、バーコード画像の解像度が低すぎたり不鮮明で、バーが統合されてしまう場合に最適です。 ErodeFilterは、背景の白い斑点を取り除きながら、バーを太くします。 不完全な画像の処理については、不完全なバーコードの例を参照してください。
フィルタに kernelSize を表す整数を入力することで、侵食効果を高めます。 カーネルサイズが大きいほど、入力画像に対する効果が強くなります。 kernelSize は正方形であり、この例では 5x5 カーネルになることに注意してください。
例として、ErodeFilterのカーネルサイズを大きくして、フィルターの効果を紹介してください。
:path=/static-assets/barcode/content-code-examples/how-to/image-correction-erode.cs
using IronBarCode;
BarcodeReaderOptions options = new BarcodeReaderOptions()
{
// Choose which filters are to be applied (in order)
ImageFilters = new ImageFilterCollection(true) {
new ErodeFilter(5),
},
};
// Apply options and read the barcode
BarcodeResults results = BarcodeReader.Read("sample.png", options);
// Export file to disk
results.ExportFilterImagesToDisk("erodeFilter.jpg");
Imports IronBarCode
Dim options As New BarcodeReaderOptions() With {
.ImageFilters = New ImageFilterCollection(True) From {
New ErodeFilter(5)
}
}
' Apply options and read the barcode
Dim results As BarcodeResults = BarcodeReader.Read("sample.png", options)
' Export file to disk
results.ExportFilterImagesToDisk("erodeFilter.jpg")
オリジナル画像
侵食フィルタを適用
上の入力画像と出力画像を比較すると、フィルタリングに大きなカーネル・サイズを入力したため、いくつかのバーが目に見えて太くなっています。 ただし、全体的な画像の白斑点は減少しました。 エロージョンフィルターの性質上、カーネルサイズが大きくなると、上の写真のように、強引に適用しすぎると細いバーを消してしまう可能性があります。 ErodeFilterに入力するカーネルサイズの値を変更して、効果をテストし、改良してください。
ディレート フィルターは BarCode 読み取りにどのように役立ちますか?
DilateFilterは、ErodeFilterの逆の機能を持ち、オブジェクトの境界にピクセルを追加することによって、明るい領域、通常は背景を拡張します。 このフィルタは、小さなギャップを埋めたり、低コントラスト領域を強調したりすることで、損傷したバーコードや淡いバーコードを修復しますが、バーコードバーへの効果は直感とは異なることに注意してください。 ディレーションは明るいスペースを拡大するため、(背景が白であると仮定した場合)黒いBarCodeバーのような暗い要素は間接的に薄くなります。 これは、非常に太いまたは合併したバーコードバーが現れる場面で特に効果的であり、過剰な使用はバーを細くしすぎてスキャン精度を低下させる可能性があります。
上記と同様に、フィルターの kernelSize を表す整数を入力して、フィルターの効果を高めます。
以下の例では、DilateFilterの効果を紹介するために、より大きなカーネル・サイズを使用してください。
:path=/static-assets/barcode/content-code-examples/how-to/image-correction-dilate.cs
using IronBarCode;
BarcodeReaderOptions options = new BarcodeReaderOptions()
{
// Choose which filters are to be applied (in order)
ImageFilters = new ImageFilterCollection(true) {
new DilateFilter(5),
},
};
// Apply options and read the barcode
BarcodeResults results = BarcodeReader.Read("sample.png", options);
// Export file to disk
results.ExportFilterImagesToDisk("dilateFilter.jpg");
Imports IronBarCode
Dim options As New BarcodeReaderOptions() With {
.ImageFilters = New ImageFilterCollection(True) From {
New DilateFilter(5)
}
}
' Apply options and read the barcode
Dim results As BarcodeResults = BarcodeReader.Read("sample.png", options)
' Export file to disk
results.ExportFilterImagesToDisk("dilateFilter.jpg")
オリジナル画像
膨張フィルタを適用しました
上の画像に示されているように、DilateFilterを積極的に使用すると、バーコード構造が破壊され、間隔の狭いバーがマージされ、バーコードにクワイエット ゾーンができる可能性があります。 入力画像に応じてカーネル・サイズの値を大きくしたり小さくしたりして、画像への効果をテストし、改良してください。
どのような場合にヒストグラム等化フィルタを使用すべきですか?
HistogramEqualizationFilterは、ピクセルの強度を再分配することによって画像のコントラストを強調し、明瞭さを向上させます。 バーコードのコントラストが低い場合(色あせた画像や洗いざらしの画像など)、または照明にムラがある場合(暗い影や明るいまぶしさなど)によく使用されます。 ピクセルの明るさの分布である画像ヒストグラムを分析することによって、暗いピクセルを暗くし、明るいピクセルを明るくするように、強度範囲をストレッチしてコントラストを高めることでピクセル値を再配布します。
:path=/static-assets/barcode/content-code-examples/how-to/image-correction-histogram-equalization-filter.cs
using IronBarCode;
BarcodeReaderOptions options = new BarcodeReaderOptions()
{
// Choose which filters are to be applied (in order)
ImageFilters = new ImageFilterCollection(true) {
new HistogramEqualizationFilter(),
},
};
// Apply options and read the barcode
BarcodeResults results = BarcodeReader.Read("sample.png", options);
// Export file to disk
results.ExportFilterImagesToDisk("histogramEqualizationFilter.jpg");
Imports IronBarCode
Dim options As New BarcodeReaderOptions() With {
.ImageFilters = New ImageFilterCollection(True) From {
New HistogramEqualizationFilter()
}
}
' Apply options and read the barcode
Dim results As BarcodeResults = BarcodeReader.Read("sample.png", options)
' Export file to disk
results.ExportFilterImagesToDisk("histogramEqualizationFilter.jpg")
オリジナル画像
ヒストグラム均等化フィルタを適用
上の画像に示されているように、元の画像と比較して、黒いバーが目に見えて暗くなり、スペースが目に見えて明るくなっています。
バーコードのノイズ除去に役立つぼかしフィルタはどれですか?
ガウスぼかしフィルタはどのように画像のノイズを減らしますか?
GaussianBlurFilter は画像にガウスぼかしを適用します。 このフィルタは、一般的に画像のノイズを低減します。 不完全な BarCode を扱うための包括的なガイドについては、image orientation correction tutorial を参照してください。
フィルターは、画像内の隣接するピクセル値をガウス関数を使用して平均化することによって機能します。 この方法は、2つの調整可能な要素に依存しています:
- カーネル: ピクセルを平均するために使用される行列。
- シグマ:ぼかしの強さを制御する値。
デフォルトのサイズはピクセルで、デフォルトの値はピクセルで、中程度のぼかしが生成されます。 Sigma の値を大きくすると、ぼかし効果が強くなります。 また、kernel をカスタマイズして、ぼかしフィルターが平均化する近傍のサイズを制御することもできます。
:path=/static-assets/barcode/content-code-examples/how-to/image-correction-gaussianblur.cs
using IronBarCode;
BarcodeReaderOptions myOptionsExample = new BarcodeReaderOptions()
{
// Choose which filters are to be applied (in order)
ImageFilters = new ImageFilterCollection(true) {
new GaussianBlurFilter(3, 3, 3.0f),
},
};
// Apply options and read the barcode
BarcodeResults results = BarcodeReader.Read("sharpen.webp", myOptionsExample);
// Export file to disk
results.ExportFilterImagesToDisk("gaussianBlur.png");
Imports IronBarCode
Private myOptionsExample As New BarcodeReaderOptions() With {
.ImageFilters = New ImageFilterCollection(True) From {New GaussianBlurFilter(3, 3, 3.0F)}
}
' Apply options and read the barcode
Private results As BarcodeResults = BarcodeReader.Read("sharpen.webp", myOptionsExample)
' Export file to disk
results.ExportFilterImagesToDisk("gaussianBlur.png")
このフィルターをサンプル入力に適用すると、以下の画像が生成されます。
画像をシャープにする
ガウスぼかし画像
バイラテラル・フィルターはいつ使うべきですか?
BilateralFilterは、エッジを保持しながら画像を滑らかにします。 すべてのピクセルに一様に影響を与える単純なぼかし技術とは異なり、バイラテラル・フィルターは色の違いとピクセルの距離の両方を考慮するため、エッジを維持したスムージングに効果的です。
このメソッドは3つの調整可能な要素に依存しています:
NeighborhoodDiameter: ピクセル近傍の直径 (デフォルト: 5)。SigmaColor: 色差の影響を決定する色の影響 (デフォルト: 75.0)。SigmaSpace: 距離の影響を決定する空間的影響 (デフォルト: 75.0)。
:path=/static-assets/barcode/content-code-examples/how-to/image-correction-bilateral.cs
using IronBarCode;
BarcodeReaderOptions myOptionsExample = new BarcodeReaderOptions()
{
// Choose which filters are to be applied (in order)
ImageFilters = new ImageFilterCollection(true) {
new BilateralFilter(5, 75, 75),
},
};
// Apply options and read the barcode
BarcodeResults results = BarcodeReader.Read("sharpen.webp", myOptionsExample);
// Export file to disk
results.ExportFilterImagesToDisk("bilateral.png");
Imports IronBarCode
Private myOptionsExample As New BarcodeReaderOptions() With {
.ImageFilters = New ImageFilterCollection(True) From {New BilateralFilter(5, 75, 75)}
}
' Apply options and read the barcode
Private results As BarcodeResults = BarcodeReader.Read("sharpen.webp", myOptionsExample)
' Export file to disk
results.ExportFilterImagesToDisk("bilateral.png")
このフィルターをサンプル入力に適用すると、以下の画像が生成されます。
画像をシャープにする
両側画像
ノイズ除去におけるMedianBlurフィルターの違いは何ですか?
MedianBlurFilter は、各ピクセルの値を周囲のピクセルの中央値で置き換えることによって、画像のノイズを低減します。 このフィルタは、ノイズを除去しながらエッジを保持することに特に優れています。BarCode 読み取り設定の詳細については、バーコードリーダー設定ガイドをご覧ください。
KernelSize: 中央値計算のための近傍のサイズ (奇数である必要があります。デフォルト: 5)。
:path=/static-assets/barcode/content-code-examples/how-to/image-correction-medianblur.cs
using IronBarCode;
BarcodeReaderOptions myOptionsExample = new BarcodeReaderOptions()
{
// Choose which filters are to be applied (in order)
ImageFilters = new ImageFilterCollection(true) {
new MedianBlurFilter(5),
},
};
// Apply options and read the barcode
BarcodeResults results = BarcodeReader.Read("sharpen.webp", myOptionsExample);
// Export file to disk
results.ExportFilterImagesToDisk("medianBlur.png");
Imports IronBarCode
Private myOptionsExample As New BarcodeReaderOptions() With {
.ImageFilters = New ImageFilterCollection(True) From {New MedianBlurFilter(5)}
}
' Apply options and read the barcode
Private results As BarcodeResults = BarcodeReader.Read("sharpen.webp", myOptionsExample)
' Export file to disk
results.ExportFilterImagesToDisk("medianBlur.png")
このフィルターをサンプル入力に適用すると、以下の画像が生成されます。
画像をシャープにする
MedianBlur画像
処理ステップごとにフィルタリングされた画像を保存するにはどうすればよいですか?
バーコードに複数のフィルタを適用する場合、各フィルタメソッド後の出力を表示することは困難です。 この機能は各フィルターが適用される順序でフィルターを適用した後、フィルターされた画像を保存します。 この機能を有効にするには、まず true をImageFilterCollectionコンストラクターに渡します。 次に、ExportFilterImagesToDisk メソッドを使用して、出力イメージのパスと名前を指定します。 バーコードの保存に関するその他の例については、バーコードを画像に変換する例を参照してください。
:path=/static-assets/barcode/content-code-examples/how-to/image-correction-save-iterations.cs
using IronBarCode;
BarcodeReaderOptions myOptionsExample = new BarcodeReaderOptions()
{
// Choose which filters are to be applied (in order)
ImageFilters = new ImageFilterCollection(true) {
new SharpenFilter(3.5f),
new AdaptiveThresholdFilter(0.5f),
new ContrastFilter(2)
},
};
// Apply options and read the barcode
BarcodeResults results = BarcodeReader.Read("sample.webp", myOptionsExample);
// Export file to disk
results.ExportFilterImagesToDisk("filteredImage.png");
Imports IronBarCode
Private myOptionsExample As New BarcodeReaderOptions() With {
.ImageFilters = New ImageFilterCollection(True) From {
New SharpenFilter(3.5F),
New AdaptiveThresholdFilter(0.5F),
New ContrastFilter(2)
}
}
' Apply options and read the barcode
Private results As BarcodeResults = BarcodeReader.Read("sample.webp", myOptionsExample)
' Export file to disk
results.ExportFilterImagesToDisk("filteredImage.png")
フィルターはコードの順序で適用され、出力画像は各反復の結果を反映します:
Sharpen->Sharpenの後Sharpen+AdaptiveThreshold->AdaptiveThresholdの後Sharpen+AdaptiveThreshold+Contrast->Contrastの後
サンプル画像
シャープニング後
適応閾値後
コントラスト後
ImageFilters プロパティとは別に、より正確な読み取りのために BarcodeReaderOptions に他のプロパティを追加します。 詳細については、この記事を参照してください。
よくある質問
画像補正フィルタとは何ですか?また、なぜバーコードの読み取りに必要なのですか?
IronBarcodeの画像補正フィルターは、不鮮明または不完全なバーコード画像をプログラムで補正する組み込みツールです。画質の悪さはバーコードの読み取りを成功させない主な要因の一つであるため、必要不可欠なものです。IronBarcodeはSharpenFilterやContrastFilterなどのフィルターを提供し、外部の画像編集ソフトウェアや画像の再キャプチャを必要とせずに読み取り精度を向上させます。
バーコードスキャニングを向上させるために画像補正フィルタを適用する方法を教えてください。
IronBarcodeでフィルタを適用するには、ImageFilterCollectionインスタンスを作成し、そこに個々のフィルタインスタンスを追加します。次に、このコレクションをBarcodeReaderOptionsのImageFiltersプロパティに割り当て、Readメソッドに渡します。例えば: new BarcodeReaderOptions { ImageFilters = new ImageFilterCollection() { new SharpenFilter(3.5f), new ContrastFilter(2.0f) }.}.
不鮮明なバーコード画像にはどの画像フィルタが推奨されますか?
ぼやけたバーコード画像には、IronBarcodeは少なくともSharpenFilterとContrastFilterを使用することをお勧めします。SharpenFilterはぼやけた画像のエッジを強調し、ContrastFilterは明るい部分と暗い部分の区別を改善します。これらのフィルタを併用することで、外部で画像処理を行わなくてもバーコードの可読性を高めることができます。
画像補正フィルターの強さをカスタマイズできますか?
はい、IronBarcodeでは各フィルターにカスタム値を設定することができます。例えば、SharpenFilterはシャープネス強度を制御するためのfloatパラメータ(3.5fなど)を受け付け、ContrastFilterはコントラストレベルを調整するためのパラメータ(2.0fなど)を受け付けます。このようにカスタマイズすることで、さまざまな画像条件に対してフィルタの効果を最適化することができます。
バーコード画像を向上させるには、外部の画像編集ツールが必要ですか?
いいえ、IronBarcodeは組み込みの画像補正フィルターを提供することで、外部の画像編集ツールの必要性を排除します。SharpenFilterやContrastFilterのようなこれらのプログラムフィルタは、.NETアプリケーション内で直接画質を向上させることができ、時間を節約し、サードパーティのソフトウェアへの依存を避けることができます。

