C# ile Barkod için Görüntü Düzeltme Filtreleri Nasıl Kullanılır

C# Görüntü Düzeltme Filtrelerini Kullanarak Barkod Kod Çözmeyi İyileştirme

This article was translated from English: Does it need improvement?
Translated
View the article in English

IronBarcode, bulanık veya kusurlu barkod görüntülerini programlı bir şekilde iyileştiren, okuyucu kesinliğini artıran ve harici resim düzenleme yazılımına veya resimleri yeniden çekmeye ihtiyaç duymadan yerleşik görüntü düzeltme filtreleri SharpenFilter ve ContrastFilter gibi sağlar.

Her görüntü mükemmel değildir ve kötü görüntü kalitesi, IronBarcode'da başarılı barkod okuyamamanın ana faktörlerinden biridir. Görüntüleri yeniden çekmek veya harici görüntü iyileştirme yazılımı kullanmak yerine, IronBarcode programatik olarak görüntü kalitesini iyileştiren yerleşik filtreler sağlar. Bu filtreler, IronBarcode'un zor görüntüleri okumasına ve genel doğruluğu artırmasına yardımcı olur.

IronBarcode'da kullanılabilir görüntü düzeltme filtreleri, resimlere olan etkileri ve bunların nasıl uygulanacağı hakkında daha fazla bilgi edinmek için okumaya devam edin. Daha kapsamlı barkod okuma teknikleri için, Barkodları Okuma eğiticimize göz atın.

Başlangıçtan Hızla: Barkod Kod Çözmelerini İyileştirmek İçin Keskinleştirme ve Kontrast Filtrelerini Uygulayın

Sadece bir adımda, IronBarcode'un SharpenFilter ve ContrastFilter, ImageFilterCollection içindeki BarcodeReaderOptions kullanılarak uygulayın. Bu, minimum kurulumla ve harici araçlara ihtiyaç duymadan barkod taramayı iyileştirir.

  1. NuGet Paket Yöneticisi ile https://www.nuget.org/packages/BarCode yükleyin

    PM > Install-Package BarCode
  2. Bu kod parçasını kopyalayıp çalıştırın.

    BarcodeResults results = IronBarCode.BarcodeReader.Read("input.png", new IronBarCode.BarcodeReaderOptions { ImageFilters = new IronBarCode.ImageFilterCollection() { new IronBarCode.SharpenFilter(3.5f), new IronBarCode.ContrastFilter(2.0f) } });
  3. Canlı ortamınızda test etmek için dağıtın

    Bugün projenizde IronBarcode kullanmaya başlayın ücretsiz deneme ile

    arrow pointer

Barkod Okumayı İyileştirmek İçin Görüntü Filtrelerini Nasıl Uygularım?

Filtreleri uygulamak için, ImageFilterCollection sınıfını başlatın ve her bir filtrenin örneklerini bireysel olarak oluşturun. Ardından nesneyi ImageFilters özelliğine BarcodeReaderOptions nesnesi olarak atayın. Örnek resim ile birlikte seçenekler nesnesini Read yöntemine gönderin. Gelişmiş kurulum seçenekleri için, NuGet paketleri kılavuzumuzu ziyaret edin.

Aşağıdaki görüntüyü örnek görüntümüz olarak kullanın.

Blurred barcode with number 4900203187590 showing poor image quality before filtering enhancement

Görüntü oldukça bulanık görünüyor. Ancak, parlaklık kabul edilebilir ve beyaz ve siyah renkleri ayırt edilebilir. Bu nedenle, barkod okunabilirliğini artırmak için en az SharpenFilter ve ContrastFilter uygulayın. Görüntüye filtre uygulamak, okumak ve sonuçları konsolda görüntülemek için aşağıdaki kod parçacığını inceleyin.

: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
$vbLabelText   $csharpLabel

Yukarıdaki kod parçacığı filtreleri uygular, barkodu okur ve filtrelenmiş görüntüyü diske dışa aktarır. Örnek ve filtrelenmiş görüntüler arasındaki karşılaştırma aşağıda gösterilmiştir.

Blurry barcode image with number 4902030187590 demonstrating poor image quality
Barcode with improved readability after applying image filters, showing clear vertical lines and number 4902030187590

IronBarcode'da Hangi Görüntü Düzeltme Filtreleri Mevcuttur?

IronBarcode özellikle görüntü düzeltme için tasarlanmış birden fazla görüntü filtresi sunar. Bu filtreler, kusurlu barkod görüntülerinin okunmasına ve okuma doğruluğunun artırılmasına yardımcı olur. Ancak, bu filtrelerin nasıl çalıştığını anlamak, uygun filtreleri seçmek ve çok fazla filtre kullanmaktan veya yanlış filtre kullanmaktan kaynaklanan performans sorunlarından kaçınmak için önemlidir. Mevcut filtreler arasında şunlar bulunur:

  • AdaptiveThresholdFilter
  • BinaryThresholdFilter
  • BrightnessFilter
  • ContrastFilter
  • InvertFilter
  • SharpenFilter
  • ErodeFilter
  • DilateFilter
  • HistogramEqualizationFilter
  • Bulanık Filtreler
    • GaussianBlurFilter
    • BilateralFilter
    • MedianBlurFilter

Filtrelerin uygulanma sırası, ImageFilterCollection içindeki yerleşimlerine dayanır. Bu filtreler hakkında ayrıntılı API belgeleri için API Referansımızı ziyaret edin.

Uyarlanabilir Eşik Filtresi Nasıl Çalışır?

AdaptiveThresholdFilter IronBarcode'da mevcut olan bir filtredir ve Bradley Uyarlanabilir Eşik tekniğini görüntüye uygular, bu da bir görüntüyü ikili hale getirmek için eşiği otomatik olarak belirler. Bu filtre, homojen olmayan aydınlatma ve değişen arka plan yoğunluk seviyelerine sahip görüntüler için idealdir.

: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")
$vbLabelText   $csharpLabel

Aşağıda, farklı değerler kullanarak filtreyi uygulamanın çıktıları bulunmaktadır.

Vertical lines showing different adaptive threshold filter outputs with solid and dashed patterns
Low-quality barcode image showing UPC number 902030187590 with significant visual distortion

Yapıcı, yapılandırma için ek parametreleri kabul eder:

  • Upper: Eşikleme için üst (beyaz) renk.
  • Lower: Eşikleme için alt (siyah) renk.
  • Threshold: İkilikleştirme için eşik sınırı (0.0-1.0).
  • Rectangle: İşlemciyi uygulamak için dikdörtgen alan.

Yukarıdaki çıktı görüntüsünde gösterildiği gibi, görüntü sadece siyah ve beyaz renklerle ikili hale getirilmiştir. Barkod okuma için hala ideal görünmese de, filtreler kombinasyonlar halinde kullanılmalıdır. En iyi sonuçları elde etmek için parametre hassasiyetiyle deney yapın.

İkili Eşik Filtresi Nasıl Çalışır?

BinaryThresholdFilter, bir rengi bileşeninin parlaklık değerine göre karşılaştırarak pikselleri belirli bir eşiğe ayırarak bir görüntüyü filtreler. AdaptiveThresholdFilter benzer şekilde, bu filtre yanlış kullanıldığında yeni veya istenmeyen gürültü ekleyebilir. Ancak, IronBarcode filtre özellikleri için varsayılan değerler belirlemiştir.

AdaptiveThresholdFilter benzer şekilde, BinaryThresholdFilter yapılandırma için aynı ek parametreleri kabul eder:

  • Upper: Eşikleme için üst (beyaz) renk.
  • Lower: Eşikleme için alt (siyah) renk.
  • Threshold: İkilikleştirme için eşik sınırı (0.0-1.0).
  • Rectangle: İşlemciyi uygulamak için dikdörtgen alan.
: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")
$vbLabelText   $csharpLabel

Örnek görüntüye uygulanan filtrelerin örnek çıktısı aşağıda yer almaktadır.

Three examples of binary threshold filter outputs showing sparse, dotted, and dense vertical line patterns
Barcode image processed with 0.9 binary threshold filter showing black and white contrast

Yukarıdaki çıktı görüntüsünü gözlemleyerek örneğin siyah ve beyaz renklere dönüştüğünü görebilirsiniz. Ancak, bu filtre, barkod çubuklarının ortadan kaldırılması ve yeni parazitler eklenmesi nedeniyle bu görüntü için açıkça uygun değildir. Zor barkod senaryolarını ele almak için, tanımlanamayan barkodlarla ilgili sorun giderme kılavuzumuza bakın.

Barkod Okumasını İyileştirmek İçin Görüntü Parlaklığını Nasıl Ayarlarım?

BrightnessFilter, IronBarcode'daki görüntü filtre koleksiyonunda önemli bir filtredir. Adından da anlaşılacağı gibi, bu filtre barkod görüntüsünün parlaklığını ayarlar. Bu kurucuya yapılan girişim, çıktı görüntüsündeki parlaklık Miktarını değiştirir. Varsayılan değer 1'dir, bu da görüntüyü olduğu gibi bırakır. 0 değeri tamamen siyah bir görüntü oluşturur, 1'in üstündeki değerler ise görüntüyü daha parlak hale getirir.

: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")
$vbLabelText   $csharpLabel

Aşağıdaki resim, bu filtrenin örnek girdi üzerine uygulanmasından sonra elde edilen çıktıdır.

Blurry UPC barcode sample showing default brightness level before filter enhancement
Blurry barcode with product number 4902030187590, demonstrating low brightness or poor image quality

Barkod Görüntülerini Geliştirmek İçin Kontrast Filtresini Nasıl Kullanırım?

ContrastFilter, bir görüntünün kontrast seviyesini ayarlar. Görüntü kontrastı, bir görüntüdeki çeşitli öğeler arasındaki renk yoğunluğu farkına atıfta bulunur. Kontrast seviyesini artırmak, ayrıntıların görünürlüğünü artırır, görüntüyü canlı ve çarpıcı hale getirirken, kontrastı azaltmak ise görüntüyü daha yumuşak ve daha sessiz hale getirir. Barkod özelleştirmesi hakkında daha fazla ayrıntı için barkod stili özelleştirme rehberimize bakın.

Varsayılan değer 1'dir, bu da görüntüyü olduğu gibi bırakır. 0 değeri tamamen gri bir görüntü oluşturur, 1'in üstündeki değerler ise görüntü kontrastını artırır.

: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")
$vbLabelText   $csharpLabel

Bu filtrenin örnek girdi üzerine uygulanması, aşağıdaki görüntüyü üretir.

Blurry barcode with number 4902030187590 demonstrating default contrast filter settings
Blurry barcode with number 4902030187590 demonstrating low contrast image quality

Ters Çevirme Filtresini Ne Zaman Kullanmalıyım?

Bu filtre, beyazın siyah ve siyahın beyaz olması gibi zıt renkler yaparak bir görüntü içindeki renkleri tersine çevirir. Özellikle arka plan rengi olan bir barkod görüntüsü okurken kullanışlıdır. BinaryThresholdFilter'den farklı olarak, bu filtre duyarlılık belirtmeye gerek kalmadan renkleri doğrudan tersine çevirir. Ayrıca, bu filtre bir CropRectangle ile birlikte kullanılabilir, böylece renklerini tersine çevirmeniz gereken görüntüdeki konumu belirtebilirsiniz, böylece tüm görüntünün renklerini tersine çevirmek yerine belirli bir alanı ters çevirirsiniz. Kırpma bölgelerini belirtme hakkında daha fazla bilgi için kırpma bölgesi öğreticimize göz atın.

: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")
$vbLabelText   $csharpLabel

Aşağıdaki çıkış görüntüsü, bu filtrenin örnek girdi görüntüsüne uygulanması sonucudur.

Blurry UPC barcode showing number 480203187590 - original image before invert filter application
Blurry inverted barcode showing white bars on dark background with number sequence 4902030187590

Bulutlu Barkod Görüntülerini Keskinleştirme Filtresi ile Nasıl Düzeltebilirim?

IronBarcode bir keskinleştirme filtresi sağlar. Bu filtre, bir görüntünün keskinliğini artırır ve bulutlu görüntülerle uğraşırken çok kullanışlıdır. Bu filtreyi ayarlayarak filtre nesnesi örneği oluştururken Sigma değerini ayarlayarak bir görüntünün keskinliğini ayarlayın. Varsayılan değer 3'tür. Sigma değerini artırmak, görüntü keskinliğini artırır. Diğer performans optimizasyon seçenekleri için okuma hızı seçenekleri rehberimize bakın.

: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")
$vbLabelText   $csharpLabel

The image below is the sharpened version of the sample input image.

Blurry barcode image demonstrating unsharpened quality before applying sharpen filter
Blurred barcode example showing effects of image quality degradation

Yukarıdaki görüntüyü orijinal görüntü ile karşılaştırıldığında, daha keskin görünüyor ve IronBarcode kullanarak barkod okumasına yardımcı oluyor. Çoğu durumda, SharpenFilter her zaman ImageFilterCollection sınıfındaki diğer filtrelerle birlikte uygulanır.

Erozyon Filtresi Ne İçin Kullanılır?

ErodeFilter, şekillerin kenarlarına yakın pikselleri kaldırarak küçük beyaz parazitleri kaldırır ve barkod çubuklarını kalınlaştırır. Bu filtre, barkod arka planında çok sayıda beyaz leke bulunan veya barkod görüntüsünün çok düşük çözünürlükte veya bulanık olduğu, çubukların birleştiği durumlarda en iyi şekilde kullanılır. ErodeFilter arka plandaki beyaz lekeleri kaldırırken çubukları kalınlaştırır. Kusurlu görüntüleri ele almakla ilgili daha fazla bilgi için kusurlu barkod örneğimize bakın.

Filtre için kernelSize temsil eden bir tamsayı girerek aşınma etkisini artırın. Çekirdek boyutu ne kadar büyükse, giriş görüntüsü üzerindeki etkisi o kadar güçlüdür. Dikkat edin ki kernelSize bir kare olup, bu örnekte 5x5 bir çekirdek olacaktır.

Örnek olarak, filtrenin etkilerini göstermek için daha büyük bir çekirdek boyutuna sahip ErodeFilter kullanın.

: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")
$vbLabelText   $csharpLabel
Blurry barcode showing number 4002030187590 - example for erode filter demonstration
Blurred barcode showing vertical black and white stripes with numerical code

Yukarıdaki giriş ve çıkış görüntülerini karşılaştırırken, bazı çubuklar, filtreye daha büyük bir çekirdek boyutu girmesinin daha agresif yapısı nedeniyle gözle görülür şekilde kalınlaşmıştır. Ancak, genel resimdeki beyaz lekeler azalmıştır. Erozyon filtresinin doğası gereği, çekirdek boyutu ne kadar büyük olursa, üstteki resimde gösterilen gibi, ince çubukları silebilirsiniz, eğer çok agresif uygularsanız. ErodeFilter için çekirdek boyutu değer girişini değiştirerek etkiyi test edip ince ayar yapın.

Dilatasyon Filtresi Barkod Okumada Nasıl Yardımcı Olur?

DilateFilter, ErodeFilter'in tersi olup, nesne sınırlarına pikseller ekleyerek parlak bölgeleri—tipik olarak arka plan—genişleterek çalışır. Bu filtre, küçük boşlukları doldurarak veya düşük kontrastlı alanları iyileştirerek hasarlı veya soluk barkodları onarırken, barkod çubukları üzerindeki etkisi beklentilerden farklı olduğuna dikkat edin. Dilatasyon, parlak alanları genişlettiği için, beyaz arka plan varsayarak, siyah barkod çubukları gibi karanlık öğeleri dolaylı olarak inceltir. Bu, barkod çubuklarının aşırı kalın veya birleşik göründüğü senaryolarda filtreyi özellikle etkili hale getirir, ancak aşırı kullanım, çubukları aşırı daraltarak tarama doğruluğunu azaltabilir.

Yukarıda olduğu gibi, filtre için kernelSize temsil eden bir tamsayı girerek filtrenin etkisini artırın.

Aşağıdaki örnek için, filtrenin etkilerini göstermek için daha büyük bir çekirdek boyutuna sahip DilateFilter kullanın.

: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")
$vbLabelText   $csharpLabel
Blurry barcode image showing number 4902030187590 - example for dilate filter processing
Blurred barcode with numerical sequence below vertical bars

Yukarıdaki görüntüde gösterildiği gibi, DilateFilter'in agresif kullanımı potansiyel olarak barkod yapısını bozabilir, yakından yerleştirilmiş çubukları birleştirir ve barkodlarda sessiz bölgeler oluşturabilir. Girdi görüntüsüne bağlı olarak çekirdek boyutu değerini daha büyük veya daha küçük olacak şekilde değiştirerek görüntü üzerindeki etkileri test edip ince ayar yapın.

Histogram Eşitleme Filtresini Ne Zaman Kullanmalıyım?

HistogramEqualizationFilter, görüntü kontrastını artırarak, piksel yoğunluklarını dağıtarak netliği artırır. En yaygın şekilde, düşük kontrasta sahip barkod, solmuş veya soluk görüntüler veya düzensiz aydınlatma, karanlık gölgeler veya parlak yansıma gibi görüntüler olduğunda kullanılır. Piksel parlaklığının dağılımı olan görüntü histogramını inceleyerek, karanlık pikseller daha karanlık hale gelir ve ligt pikseller daha aydınlık hale gelirken, kontrast artırılarak yoğunluk aralığını gerer ve piksel değerlerini dağıtır.

: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")
$vbLabelText   $csharpLabel
Blurry barcode with number 4902030187590 used as test image for histogram equalization filter
Barcode with vertical black and white stripes showing number 4902030187590

Yukarıdaki görüntüde gösterildiği gibi, siyah çubuklar gözle görünür şekilde daha karanlık ve boşluklar orijinal görüntüye göre gözle görülür derecede daha parlaktır.

Barkod Gürültü Azaltımı için Hangi Bulanıklaştırma Filtreleri Yardımcı Olabilir?

GaussianBlur Filtresi Görüntü Gürültüsünü Nasıl Azaltır?

GaussianBlurFilter bir görüntüye Gaussian bulanıklığı uygular. Bu filtre yaygın olarak bir görüntüdeki gürültüyü azaltır. Kusursuz barkodlarla başa çıkma hakkında kapsamlı bir rehber için görüntü oryantasyon düzeltme öğreticimize bakın.

Filtre, görüntüdeki komşu piksel değerlerini bir Gaussian fonksiyonu kullanarak ortalayarak çalışır. Yöntem, iki ayarlanabilir faktöre dayanır:

  • Kernel: pikselleri ortalamak için kullanılan bir matris.
  • Sigma: bulanıklık yoğunluğunu kontrol eden bir değer.

Varsayılan kernel boyutu 3x3 pikseldir ve varsayılan Sigma değeri 3.0 olup, orta derecede bulanıklık üretir. Sigma değerini artırmak daha güçlü bir bulanıklık etkisi yaratır. Bulanıklık filtresinin ortalamalarını aldığı komşuluk boyutunu kontrol etmek için kernel kişiselleştirebilirsiniz.

: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")
$vbLabelText   $csharpLabel

Bu filtrenin örnek girdi üzerine uygulanması, aşağıdaki görüntüyü üretir.

Blurry barcode with number 4902030187590 demonstrating poor image quality
Barcode image with Gaussian blur filter applied, showing blurred vertical lines and distorted numbers

Bilateral Filtresini Ne Zaman Kullanmalıyım?

BilateralFilter kenarlıkları koruyarak görüntüleri yumuşatır. Tüm pikselleri eşit şekilde etkileyen basit bulanıklık tekniklerinden farklı olarak, Bilateral Filter hem renk farklılıklarını hem de piksel mesafesini dikkate alır, bu da kenar-koruma yumuşatma için etkili kılar.

Yöntem, üç ayarlanabilir faktöre dayanır:

  • NeighborhoodDiameter: Piksel komşuluğunun çapı (varsayılan: 5).
  • SigmaColor: Renk farkı etkisini belirleyen renk etkisi (varsayılan: 75.0).
  • SigmaSpace: Mesafe etkisini belirleyen mekansal etki (varsayılan: 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")
$vbLabelText   $csharpLabel

Bu filtrenin örnek girdi üzerine uygulanması, aşağıdaki görüntüyü üretir.

Blurred barcode demonstrating poor image quality with vertical lines and numbers 4902030187590
Blurred barcode with numbers 4902030187590 demonstrating poor image quality

Gürültü Azaltımı için MedianBlur Filtre Farkı Nedir?

MedianBlurFilter, bir görüntüdeki gürültüyü her piksellerin değeri ile çevreleyen piksellerin medyan değeri arasına değiştirir. Bu filtre, gürültüyü giderirken kenarları korumada özellikle başarılıdır. Barkod okuma ayarları hakkında daha fazla bilgi edinmek için, barkod okuyucu ayarları rehberimize gidin.

  • KernelSize: Medyan hesaplama için komşuluk boyutu (tek sayı olmalı, varsayılan: 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")
$vbLabelText   $csharpLabel

Bu filtrenin örnek girdi üzerine uygulanması, aşağıdaki görüntüyü üretir.

Blurry barcode example showing poor image quality with digital artifacts and reduced readability
Barcode with median blur filter applied showing blurred vertical lines and number 4902030187590

Her İşleme Adımında Filtrelenmiş Görüntüleri Nasıl Kaydedebilirim?

Barkoda birden fazla filtre uygulandığında, her filtre yönteminden sonra çıkışı görüntülemek zor olabilir. Bu özellik, uygulanan her filtreden sonra filtrelenmiş görüntüyü, işlendikleri sırayla kaydetmenizi sağlar. Bu özelliği etkinleştirmek için, önce true ilk olarak ImageFilterCollection yapıcısına iletin. Ardından çıktı görüntülerinin yolu ve adını sağlamak için ExportFilterImagesToDisk yöntemini kullanın. Barkod kaydetme hakkında daha fazla örnek için barkodu görüntüye dönüştürme örneğimize göz atın.

: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")
$vbLabelText   $csharpLabel

Filtreler kodun sırasına göre uygulanır ve çıktı görüntüleri her yinelemenin sonuçlarını yansıtır:

  • Sharpen -> Sharpen sonrası
  • Sharpen + AdaptiveThreshold -> AdaptiveThreshold sonrası
  • Sharpen + AdaptiveThreshold + Contrast -> Contrast sonrası
Blurry barcode with number 4902030187590
Blurry UPC barcode showing number 4902030187590
Degraded barcode example showing poor image quality with number 9020301875905
Heavily pixelated barcode with UPC number 902030187590

ImageFilters özelliklerinin dışında, daha doğru okuma için BarcodeReaderOptions başka özellikler ekleyin; daha fazla bilgi için bu makaleye bakın.

Sıkça Sorulan Sorular

Görüntü düzeltme filtreleri nelerdir ve barkod okumada neden gereklidir?

IronBarcode'daki görüntü düzeltme filtreleri, bulanık veya kusurlu barkod görüntülerini programatik olarak iyileştiren yerleşik araçlardır. Bu filtreler gereklidir çünkü kötü görüntü kalitesi, başarılı barkod okunmasını engelleyen ana faktörlerden biridir. IronBarcode, dış görüntü düzenleme yazılımı veya görselleri yeniden çekmeye gerek kalmadan okuma doğruluğunu artıran SharpenFilter ve ContrastFilter gibi filtreler sunar.

Barkod taramayı iyileştirmek için görüntü düzeltme filtrelerini nasıl uygularım?

IronBarcode'da filtre uygulamak için bir ImageFilterCollection örneği oluşturun ve buna bireysel filtre örnekleri ekleyin. Ardından bu koleksiyonu, BarcodeReaderOptions'ın ImageFilters özelliğine atayın ve Read yöntemine aktarın. Örneğin: new BarcodeReaderOptions { ImageFilters = new ImageFilterCollection() { new SharpenFilter(3.5f), new ContrastFilter(2.0f) } }.

Bulanık barkod görüntüleri için hangi görüntü filtreleri önerilir?

Bulanık barkod görüntüleri için IronBarcode, en azından SharpenFilter ve ContrastFilter kullanmayı önerir. SharpenFilter, bulanık görüntülerdeki kenar tanımını artırırken, ContrastFilter, açık ve koyu alanlar arasındaki ayrımı iyileştirir. Bu filtreler, dış görüntü işleme olmadan barkodları daha okunabilir hale getirir.

Görüntü düzeltme filtrelerinin gücünü özelleştirebilir miyim?

Evet, IronBarcode her filtreyi özel değerlerle yapılandırmanıza izin verir. Örneğin, SharpenFilter keskinleştirme yoğunluğunu kontrol etmek için float bir parametre (örneğin, 3.5f) kabul eder ve ContrastFilter kontrast seviyelerini ayarlamak için bir parametre (örneğin, 2.0f) kabul eder. Bu özelleştirme, farklı görüntü koşulları için filtre etkinliğini optimize etmeye yardımcı olur.

Barkod görüntülerini iyileştirmek için dış görüntü düzenleme araçlarına ihtiyaçım var mı?

Hayır, IronBarcode, yerleşik görüntü düzeltme filtreleri sağlayarak dış görüntü düzenleme araçlarına olan ihtiyaçı ortadan kaldırır. SharpenFilter ve ContrastFilter gibi programatik filtreler, görüntü kalitesini .NET uygulamanızın içinde artırabilir, zaman tasarrufu sağlar ve üçüncü taraf yazılımlarına olan bağımlılığı önlemeye yardımcı olur.

Hairil Hasyimi Bin Omar
Yazılım Mühendisi
Tüm harika mühendisler gibi, Hairil de hevesli bir öğrenendir. C#, Python ve Java bilgilerini keskinleştiriyor ve bu bilgilerini, Iron Software ekibi genelinde takım üyelerine değer katmak için kullanıyor. Hairil, Malezya'daki Universiti Teknologi MARA'dan mezun olan Ek Kimya ve Süreç Mühendisliği ...
Daha Fazlasını Oku
Başlamaya Hazır mısınız?
Nuget İndirmeler 2,169,908 | Sürüm: 2026.4 just released
Still Scrolling Icon

Hala Kaydiriyor musunuz?

Hızlı bir kanit mi istiyorsunuz? PM > Install-Package BarCode
bir örnek çalıştırın dize barkod haline geldiğini görün.