C# Kullanarak Barkod İçin Görüntü Düzeltme Filtrelerini Nasıl Kullanırım?

Bar kod Çözümlemeyi İyileştirmek için C# Resim Düzeltme Filtrelerini Kullanma

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, dış görüntü düzenleme yazılımı veya tekrar çekim yapmadan okuma doğruluğunu artıran, SharpenFilter ve ContrastFilter gibi yerleşik görüntü düzeltme filtreleri sağlar.

Her resim mükemmel değildir ve zayıf görüntü kalitesi IronBarcode'da başarılı barkod okuma işlemlerini engelleyen ana faktörlerden biridir. Görüntüleri yeniden çekmek veya dış resim iyileştirme yazılımı kullanmak yerine, IronBarcode yerleşik filtreler sunarak resim kalitesini programatik olarak iyileştirir. Bu filtreler, IronBarcode'un zor görüntüleri okumasına ve genel doğruluğu artırmasına yardımcı olur.

IronBarcode'da mevcut resim düzeltme filtreleri, bunların görüntüler üzerindeki etkileri ve nasıl uygulanacakları hakkında bilgi edinmek için okumaya devam edin. Daha kapsamlı barkod okuma teknikleri için, Barkodları Okuma eğiticimizi kontrol edin.

Hızlı Başlangıç: Barkod Okumalarını İyileştirmek İçin Keskinleştirme ve Kontrast Filtreleri Uygulayın

Sadece bir adımda IronBarcode'un SharpenFilter ve ContrastFilter uygulamasını ImageFilterCollection içinde BarcodeReaderOptions kullanarak yapın. Bu, minimum kurulumla ve dış araçlara gerek duymadan barkod taramasını iyileştirir.

  1. IronBarcode aşağıdaki NuGet Paket Yöneticisi ile yükleyin

    PM > Install-Package BarCode
  2. Bu kod parçacığını kopyalayın ve ç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 için dağıtım yapın

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

    arrow pointer

Barkod Okuma İşlemini İyileştirmek İçin Resim Filtrelerini Nasıl Uygularım?

Filtreleri uygulamak için ImageFilterCollection sınıfını başlatın ve her bir filtre için ayrı örnekler oluşturun. Sonra nesneyi BarcodeReaderOptions nesnesinin ImageFilters özelliğine atayın. Örnek görüntü ile birlikte seçenekler nesnesini Read yöntemine iletin. İleri düzey kurulum seçenekleri için, NuGet paketleri kılavuzumuzu ziyaret edin.

Aşağıdaki resmi örnek resmimiz olarak kullanın.

Filtreleme iyileştirmesinden önce düşük görüntü kalitesini gösteren, 4900203187590 sayılı bulanık barkod

Görüntü oldukça bulanık görünüyor. Ancak parlaklık kabul edilebilir düzeyde ve beyaz ile siyah renkler ayırt edilebilir. Bu nedenle, barkod okunabilirliğini artırmak için en az SharpenFilter ve ContrastFilter uygulayın. Aşağıdaki kod parçasına bakarak görüntüye filtreleri uygulayın, okuyun ve sonucu konsola yazdırın.

: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çası filtreleri uygular, barkodu okur ve filtreli resmi diske ihraç eder. Örnek ve filtrelenmiş görüntüler arasındaki karşılaştırma aşağıda gösterilmektedir.

Düşük görüntü kalitesini gösteren, 4902030187590 sayılı bulanık barkod görüntüsü
Görüntü filtreleri uygulandıktan sonra okunabilirliği artmış, net dikey çizgiler ve 4902030187590 sayısını gösteren barkod

IronBarcode'daki Hangi Resim Düzeltme Filtreleri Mevcuttur?

IronBarcode, görüntü düzeltme için özel olarak tasarlanmış birkaç 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, uygun filtreleri seçmek ve çok fazla filtre kullanmak veya yanlış filtre kullanmaktan performans sorunlarından kaçınmak için bu filtrelerin nasıl çalıştığını anlayın. Mevcut filtreler şunları içerir:

  • AdaptiveThresholdFilter
  • BinaryThresholdFilter
  • BrightnessFilter
  • ContrastFilter
  • InvertFilter
  • SharpenFilter
  • ErodeFilter
  • DilateFilter
  • HistogramEqualizationFilter
  • Bulanıklaştırma Filtreleri
    • GaussianBlurFilter
    • BilateralFilter
    • MedianBlurFilter

Filtrelerin uygulanma sırası, ImageFilterCollection içindeki yerleşimlerine göre belirlenir. Bu filtrelerin ayrıntılı API belgeleri için API Referansımızı ziyaret edin.

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

IronBarcode'da mevcut olan AdaptiveThresholdFilter, görüntüye Bradley Adaptive Threshold tekniğini uygulayan bir filtredir ve görüntüye siyah-beyaz dönüşümü için eşiği otomatik olarak belirler. Bu filtre, düzensiz aydınlatma ve değişken 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 kullanılarak filtrenin uygulanmasının çıktıları bulunmaktadır.

Düz ve kesikli desenlerle farklı uyarlanabilir eşik filtresi çıktılarını gösteren dikey çizgiler
Önemli görsel bozulmayla 902030187590 UPC numarasını gösteren düşük kaliteli barkod görüntüsü

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

  • Upper: Eşikleme için üst (beyaz) renk.
  • Lower: Eşikleme için alt (siyah) renk.
  • Threshold: İkilik hale geçiş için eşik limiti (0,0-1,0).
  • Rectangle: İşlemciyi uygulamak için kare bölge.

Yukarıdaki çıkış resminde gösterildiği gibi, görüntü yalnızca siyah ve beyaz renklere sahip olacak şekilde ikilendirilmiştir. Barkod okumak için hala ideal görünmese de, filtrelerin kombinasyon halinde kullanılması gerekmektedir. En iyi sonuçları elde etmek için parametre duyarlılığını deneyin.

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

BinaryThresholdFilter, bir renk bileşeninin parlaklığını karşılaştırarak verili eşikte pikselleri ayırarak görüntüyü filtreler. AdaptiveThresholdFilter'ye benzer şekilde, bu filtre yanlış kullanıldığında yeni veya istenmeyen gürültü üretebilir. Ancak, IronBarcode filtre özellikleri için varsayılan değerler ayarlamıştır.

AdaptiveThresholdFilter'ye 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: İkilik hale geçiş için eşik limiti (0,0-1,0).
  • Rectangle: İşlemciyi uygulamak için kare bölge.
: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

Aşağıda, örnek görüntüye filtrelerin uygulanması sonucunda elde edilen çıktı bulunmaktadır.

Seyrek, noktalı ve yoğun dikey çizgi desenlerini gösteren üç ikili eşik filtresi çıktısı örneği
Siyah beyaz kontrastı gösteren, 0.9 ikili eşik filtresiyle işlenmiş barkod görüntüsü

Yukarıdaki çıkış görüntüsüne bakıldığında, örnek siyah ve beyaz renklere dönüştürülmüştür. Ancak, bu filtin üzerine sürülen filtre, barkod çubuklarının kaldırılması ve yeni gürültü eklenmesi nedeniyle bu görüntü için açıkça uygun değildir. Zor barkod senaryolarının üstesinden gelmek için, tanınmayan barkodlar için sorun giderme kılavuzumuza başvurun.

Barkod Okumayı İyileştirmek İçin Resim Parlaklığını Nasıl Ayarlarım?

BrightnessFilter, IronBarcode'da görüntü filtre koleksiyonunda başka bir önemli filtredir. Adından da anlaşılacağı gibi, bu filtre, barkod görüntüsünün parlaklığını ayarlar. Bu yapıcıya verilen giriş, çıktı görüntüsündeki Miktar parlaklığı değiştirir. Varsayılan değer 1'dir ve bu, görüntüyü değiştirmeden bırakır. 0 değeri tamamen siyah bir görüntü yaratırken, 1'in üzerindeki değerler 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ğıda, bu filtrenin örnek girdiye uygulanmasından sonra elde edilen çıktı görüntü bulunmaktadır.

Blurry UPC barcode sample showing default brightness level before filter enhancement
Düşük parlaklık veya kötü görüntü kalitesini gösteren, 4902030187590 ürün numaralı bulanık barkod

Barkod Görsellerini İyileş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ını ifade eder. Kontrast seviyesinin artırılması, detayların daha görünür olmasını sağlar ve görüntünün canlı ve çarpıcı görünmesini sağlarken, kontrastın azalması görüntünün daha yumuşak ve daha sessiz görünmesini sağlar. Barkod özelleştirme hakkında daha fazla ayrıntı için barkod stilini özelleştirme kılavuzumuza bakın.

Varsayılan değer 1'dir ve bu, görüntüyü değiştirmeden bırakır. 0 değeri tamamen gri bir görüntü yaratırken, 1'in üzerindeki değerler 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 filtreyi örnek girdiye uygulamak, aşağıdaki görüntüyü üretir.

Varsayılan kontrast filtresi ayarlarını gösteren, 4902030187590 sayılı bulanık barkod
Düşük kontrastlı görüntü kalitesini gösteren, 4902030187590 sayılı bulanık barkod

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

Bu filtre, bir görüntü içindeki renkleri ters çevirir, yani beyaz siyaha ve siyah da beyaza dönüşür. Özellikle bir barkod görüntüsünün zemin renginde okunması gereken durumlarda faydalıdır. BinaryThresholdFilter'dan farklı olarak, bu filtre, hassasiyet belirtmeye gerek kalmadan renkleri doğrudan ters çevirir. Ayrıca, bu filtre, renklerin tüm görüntü yerine belirli bir alanda ters çevrilmesi için bir KırpmaDikdörtgeni ile kullanılabilir. Kırpma bölgeleri ayarlama hakkında daha fazla bilgi için, kırpma bölgesi eğitimimize bakı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 çıktı görüntüsü, bu filtrenin örnek giriş görüntüsüne uygulanmasının sonucudur.

480203187590 sayısını gösteren bulanık UPC barkodu - ters çevirme filtresi uygulanmadan önceki orijinal görüntü
Koyu arka plan üzerinde beyaz çubuklar ve 4902030187590 sayı dizisini gösteren bulanık ters çevrilmiş barkod

Keskinleştirme Filtresiyle Bulanık Barkod Görsellerini Nasıl Düzeltebilirim?

IronBarcode bir keskinleştirme filtresi sağlar. Bu filtre, bulanık görüntülerle uğraşırken çok faydalı olan bir görüntünün keskinliğini artırır. Bu filtreyi, filtğu başlatırken Sigma değerini ayarlayarak görüntünün keskinliğini ayarlamak için manipüle edin. Varsayılan değer 3'tür. Sigma değerini artırarak görüntünün keskinliğini artırın. Diğer performans optimizasyon seçenekleri için, okuma hız seçenekleri hakkında kılavuzumuza 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

Aşağıdaki resim, örnek giriş görüntüsünün keskinleştirilmiş versiyonudur.

Keskinleştirme filtresi uygulanmadan önce keskinleştirilmemiş kaliteyi gösteren bulanık barkod görüntüsü
Görüntü kalitesi bozulmasının etkilerini gösteren bulanık barkod örneği

Yukarıdaki görüntüyü orijinal görüntü ile karşılaştırarak, daha keskin görünmektedir ve IronBarcode ile barkod okumaya yardımcı olmaktadır. Çoğu durumda, SharpenFilter her zaman ImageFilterCollection sınıfında diğer filtrelerle birlikte uygulanır.

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

ErodeFilter, şekillerin kenarlarına yakın pikselleri kaldırarak küçük beyaz gürültüyü giderir ve barkod çubuklarını kalınlaştırır. Bu filtre en iyi, barkod arka planında çok sayıda beyaz leke olduğu veya barkod görüntüsünün çözünürlüğü çok düşük ya da bulanık olduğu durumlarda, birleşik çubuklar oluştuğunda kullanılır. ErodeFilter, arka plandaki beyaz lekeleri temizlerken çubukları kalınlaştırır. Kusurlu görüntülerle nasıl başa çıkılacağı hakkında daha fazla bilgi için, kusurlu barkod örneğine bakın.

Filtrenin etkisini artırmak için kernelSize temsil eden bir tamsayı girin. Çekirdek boyutu ne kadar büyükse, giriş görüntüsü üzerindeki etkisi o kadar güçlü olur. kernelSize kare şeklinde olduğunu unutmayın ve bu örnekte 5x5 çekirdek olacaktır.

Örnek olarak, filtrenin etkilerini göstermek için daha büyük bir çekirdek boyutuyla 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
4002030187590 sayısını gösteren bulanık barkod - aşındırma filtresi gösterimi örneği
Sayısal kodla birlikte dikey siyah beyaz şeritler gösteren bulanık barkod

Yukarıda girdiler ve çıktı görüntülerini karşılaştırarak, bazı çubuklar daha büyük çekirdek boyutunu filtreye girdi olarak kullanmanın daha agresif doğası nedeniyle gözle görülür şekilde kalındır. Ancak, genel resimdeki beyaz benekler azaldı. Yontma filtresinin doğası gereği, çekirdek boyutu büyüdüğünde, yukarıdaki resimde gösterildiği gibi çok agresif uygulanırsa ince çubuklarğağıra da silinebilir. Filtrenin etkisini test etmek ve ince ayar yapmak için ErodeFilter giriş çekirdek boyutu değerini değiştirin.

Yoğaltma Filtresi Barkod Okuma İçin Nasıl Yardımcı Olur?

DilateFilter, parlak bölgeleri — tipik olarak arka planı — nesne sınırlarına piksel ekleyerek genişleterek ErodeFilter'un tersi olarak çalışır. Bu filtre, düşük kontrast alanları iyileştirerek veya küçük boşlukları doldurarak zarar görmüş veya solmuş barkodları onarsa da, etkisi barkod çubuklarına sezgiden farklıdır. Yoğaltma, parlak alanları genişlettiğinden, beyaz bir arka planda olduğu varsayıldığında, siyah barkod çubukları gibi koyu öğeleri dolaylı olarak inceltir. Bu, aşırı daraltarak çubukların tarama hassasiyetini düşürmelerine neden olabilecek aşırı kullanıma karşı dikkat gerektiren, barkod çubuklarının aşırı kalın veya birleşik göründüğü senaryolarda filtreyi özellikle etkili kılar.

Yukarıdaki gibi, filtrenin etkisini artırmak için kernelSize temsil eden bir tamsayı girin.

Aşağıdaki örnek için DilateFilter etkilerini göstermek için daha büyük bir çekirdek boyutu 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
4902030187590 sayısını gösteren bulanık barkod görüntüsü - genişletme filtresi işleme örneği
Dikey çubukların altında sayısal dizi bulunan bulanık barkod

Yukarıdaki görselde gösterildiği gibi, DilateFilter'un agresif kullanımı barkod yapısını potensiyel olarak bozabilir, yakın boşlukları kaynaştıabilir ve barkodlarda sessiz alanlar oluşturabilir. Giriş görüntüsüne bağlı olarak, çekirdek boyutu değerini büyütüp küçülterek görüntü üzerindeki etkileri test edin ve inceleyin.

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

HistogramEqualizationFilter, netliği artırmak için piksel yoğunluklarını yeniden dağıtarak görüntü kontrastını artırır. En yaygın olarak, düşük kontrastlı barkodlarda kullanılır; örneğin solmuş veya soluk görüntüler, ya da karanlık gölgeler veya parlak parıltılar gibi düzensiz aydınlatmanın olduğu görüntüler. Görüntü histogramını, yani piksel parlaklığı dağılımını analiz ederek, piksel değerlerini yeniden dağıtarak kontrastı güçlendirir, yoğunluk aralığını genişleterek karanlık pikseller daha karanlık, parlak pikseller daha parlak hale gelir.

: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
Histogram eşitleme filtresi için test görüntüsü olarak kullanılan, 4902030187590 sayılı bulanık barkod
4902030187590 sayısını gösteren, dikey siyah beyaz şeritli barkod

Yukarıdaki resimde gösterildiği gibi, siyah çubuklar gözle görülür şekilde daha koyu ve boşluklar orijinal görüntüye göre daha parlak.

Barkod Gürültü Azaltımı İç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 Gauss bulanıklığı uygular. Bu filtre genellikle bir görüntüdeki gürültüyü azaltır. Kusurlu barkodlarla başa çıkma konusunda kapsamlı bir kılavuz için, görüntü yönlendirme düzeltme eğiticimize başvurun.

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

  • Kerneli: 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'dir, orta derecede bir bulanıklık üretir. Sigma değerini artırmak, daha güçlü bir bulanıklık etkisi verir. Ayrıca kernel özelleştirilerek bulanıklık filtresinin ortalama aldığı komşuluk büyüklüğünü kontrol edebilirsiniz.

: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 filtreyi örnek girdiye uygulamak, aşağıdaki görüntüyü üretir.

Düşük görüntü kalitesini gösteren, 4902030187590 sayılı bulanık barkod
Gaussian bulanıklık filtresi uygulanmış, bulanık dikey çizgiler ve bozuk sayılar gösteren barkod görüntüsü

Bilateral Filtresini Ne Zaman Kullanmalıyım?

BilateralFilter, kenarları korurken görüntüleri düzleştirir. Basit bulanıklık tekniklerinde tüm pikselleri eşit şekilde etkileyen Blateral Filtre, hem renk farklarını hem de piksel mesafelerini dikkate alarak kenar koruyucu yumuşatma sağlar.

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

  • NeighborhoodDiameter: Piksel komşuluk çapı (varsayılan: 5).
  • SigmaColor: Renk farkı etkisini belirleyen renk etkisi (varsayılan: 75,0).
  • SigmaSpace: Mesafe etkisini belirleyen uzamsal etkisi (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 filtreyi örnek girdiye uygulamak, aşağıdaki görüntüyü üretir.

Dikey çizgiler ve 4902030187590 sayısıyla düşük görüntü kalitesini gösteren bulanık barkod
Düşük görüntü kalitesini gösteren, 4902030187590 sayılı bulanık barkod

MedianBlur Gürültü Azaltımı İçin Neden Farklıdır?

MedianBlurFilter, her bir pikselin değerini çevresindeki piksellerin medyan değeriyle değiştirerek bir görüntüdeki gürültüyü azaltır. Bu filtre, kenarları korurken gürültüyü gidermede özellikle iyidir. Barkod okuma ayarları hakkında daha fazla bilgi edinmek için, barkod okuyucu ayarları kılavuzumuzu ziyaret edin.

  • KernelSize: Medyan hesaplama için komşuluk büyüklüğü (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 filtreyi örnek girdiye uygulamak, aşağıdaki görüntüyü üretir.

Dijital bozulmalar ve azalmış okunabilirlikle düşük görüntü kalitesini gösteren bulanık barkod örneği
Medyan bulanıklık filtresi uygulanmış, bulanık dikey çizgiler ve 4902030187590 sayısını gösteren barkod

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

Barkoda birden fazla filtre uygularken, her filtre yönteminin çıktısını görmek zor olabilir. Bu özellik, uygulanan her bir filtre ardından filterlenmiş görüntünün kaydedilmesine imkan tanır, işlendikleri sıraya göre. Bu özelliği etkinleştirmek için önce true'yi ImageFilterCollection yapıcıya gönderin. Sonra, çıktı görüntüleri için yolu ve adı sağlamak üzere ExportFilterImagesToDisk yöntemini kullanın. Barkodları kaydetme hakkında daha fazla örnek için, barkodu görüntüye dönüştürme örneğimizi inceleyin.

: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 -> Sonra Sharpen
  • Sharpen + AdaptiveThreshold -> Sonra AdaptiveThreshold
  • Sharpen + AdaptiveThreshold + Contrast -> Sonra Contrast
4902030187590 sayılı bulanık barkod
Blurry UPC barcode showing number 4902030187590
9020301875905 sayısıyla düşük görüntü kalitesini gösteren bozulmuş barkod örneği
902030187590 UPC numaralı, yoğun şekilde pikselleşmiş barkod

ImageFilters özelliklerinin yanı sıra 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 okuma için neden gereklidir?

IronBarcode'daki görüntü düzeltme filtreleri, bulanık veya kusurlu barkod görüntülerini programlı olarak iyileştiren yerleşik araçlardır. Başarılı barkod okumalarını engelleyen ana faktörlerden biri kötü görüntü kalitesidir. IronBarcode, SharpenFilter ve ContrastFilter gibi dış görüntü düzenleme yazılımlarına veya görüntüleri yeniden çekmeye gerek kalmadan okuma doğruluğunu artıran filtreler sağlar.

Barkod taramasını iyileştirmek için nasıl görüntü düzeltme filtreleri uygulayabilirim?

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

Bulanık barkod görüntüleri için hangi filtreler ö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ülerde kenar tanımını iyileştirirken, ContrastFilter, açık ve koyu alanlar arasındaki ayrımı artırır. Bu filtreler, dış görüntü işlemlerine gerek kalmadan barkodları daha okunabilir hale getirmek için birlikte çalışır.

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

Evet, IronBarcode her filtreyi özel değerlerle yapılandırmanıza olanak tanır. Örneğin, SharpenFilter keskinleştirme yoğunluğunu kontrol etmek için bir float parametresi (3.5f gibi) kabul eder ve ContrastFilter kontrast seviyelerini ayarlamak için bir parametre (2.0f gibi) 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 harici görüntü düzenleme araçlarına ihtiyacım var mı?

Hayır, IronBarcode, yerleşik görüntü düzeltme filtreleri sağlayarak harici görüntü düzenleme araçlarına duyulan ihtiyacı ortadan kaldırıyor. Keskinleştirme Filtresi ve Kontrast Filtresi gibi bu programatik filtreler, .NET uygulamanız içinde doğrudan görüntü kalitesini artırabilir, böylece zaman kazandırır ve üçüncü taraf yazılımlara bağımlılıktan kaçınır.

Barkod operasyonlarında IronBarcode kullanmanın avantajları nelerdir?

IronBarcode, entegrasyon kolaylığı, birçok barkod formatını destekleme, yüksek kaliteli görüntü üretimi ve sağlam okuma yetenekleri gibi avantajlar sunarak, C#'ta barkod operasyonları için kapsamlı bir araçtır.

IronBarcode barkod görünümünü özelleştirme desteği sağlıyor mu?

Evet, IronBarcode, barkod görünümünü özelleştirmek için renk, boyut ve metin notları gibi geniş seçenekler sunar, bu da barkodları belirli tasarım gereksinimlerinize göre uyarlamanıza imkan tanır.

IronBarcode, iş süreçlerindeki verimliliği artırmaya nasıl yardımcı olabilir?

IronBarcode, hızlı ve doğru barkod üretimi ve okuma yeteneği sağlayarak, manuel veri girişi hatalarını azaltır ve envanter ile varlık takibini iyileştirerek iş süreçlerinin verimliliğini artırır.

Bir projede IronBarcode'u uygulamak için hangi programlama becerileri gereklidir?

IronBarcode'u bir projede uygulamak için temel C# programlama bilgisi yeterlidir, çünkü bu kütüphane, geliştiricilere rehberlik eden basit yöntemler ve kapsamlı belgeler sağlar.

IronBarcode, hem küçük projeler hem de büyük kurumsal uygulamalar için uygun mu?

IronBarcode, küçük projeler kadar geniş çaplı kurumsal uygulamalar için de uygun, ölçeklenebilir ve çok yönlü olacak şekilde tasarlanmıştır ve sağlam barkod çözümleri gerektiren uygulamalara hizmet eder.

Hairil Hasyimi Bin Omar
Yazılım Mühendisi
Tüm harika mühendisler gibi, Hairil de hevesli bir öğrenicidir. C#, Python ve Java bilgilerini geliştirerek, bu bilgileri Iron Software genelinde ekip üyelerine değer katmak için kullanıyor. Hairil, Malay'daki Universiti Teknologi MARA'dan Kimya ve Süreç Mühendisliği alanında lisans derecesi ile Iron ...
Daha Fazla Oku
Başlamaya Hazır mısınız?
Nuget İndirmeler 2,331,688 | Sürüm: 2026.7 yeni yayınlandı
Still Scrolling Icon

Hâlâ Kaydırıyor Musunuz?

Hızlıca kanıt ister misiniz? PM > Install-Package BarCode
bir örnek çalıştır dizginizin barkoda dönüştüğünü izle.