Görüntü işlemede eğrilik düzeltme, görüntü optimizasyonunun bir görevidir. Bilgisayarlı görüde, kameralarımızı ve sensörlerimizi doğru bir şekilde konumlandırmamız gerekir, ancak bu genellikle büyük bozulmalara yol açar. Benzer şekilde, tarayıcılarla tarama yaparken bazen hizalama neredeyse imkansızdır. Bu nedenle, taranan resimlerde ve fotoğraflarda hafif bir eğrilik (eğim) vardır. Bu yazımızda C# kullanarak görüntü işlemede çarpıklık düzeltmeyi nasıl yapacağımızı öğreneceğiz.
Bu yazıda aşağıdaki konular ele alınacaktır:
- C# Eğim Düzeltme Görüntü İşleme API’sı
- Görüntü Eğiklik Açısını Algıla
- Otomatik Eğim Düzeltme
- Ön İşleme Filtresi ile Otomatik Eğim Düzeltme
- Otomatik Eğim Düzeltme ile Görüntü Metnini Tanıyın
- Manuel Eğim Düzeltme
- Ön İşleme Filtresiyle Manuel Eğim Düzeltme
C# Eğiklik Düzeltme Görüntü İşleme API’sı
Çarpıklık düzeltmeleri için Aspose.OCR for .NET API’sini kullanacağız. API, taranan görüntülerde, akıllı telefon fotoğraflarında, ekran görüntülerinde, görüntünün alanlarında ve taranan PDF’lerde OCR gerçekleştirmeye olanak tanır. Tanınan metin sonuçlarının popüler belge formatlarında kaydedilmesini sağlar.
Lütfen API’nin [DLL’sini 10 indirin] veya NuGet kullanarak kurun.
PM> Install-Package Aspose.OCR
C#’ta Görüntü Eğrilik Açısını Algıla
API, sağlanan kaynak görüntünün eğim açısını hesaplayan CalculateSkew(string) yöntemini sağlar. Aşağıda verilen adımları izleyerek bir metin görüntüsünün eğim açısını kolayca tespit edebiliriz:
- Öncelikle, AsposeOCR sınıfının bir örneğini oluşturun.
- CalculateSkew() yöntemini çağırın. Görüntü yolunu bağımsız değişken olarak alır.
- Son olarak, hesaplanan eğim açısını gösterin.
Aşağıdaki örnek kod, C# dilinde bir görüntünün eğim açısının nasıl hesaplanacağını gösterir.
// Bu kod örneği, bir görüntünün eğim açısının nasıl hesaplanacağını gösterir.
// AsposeOcr'un bir örneğini oluşturun
AsposeOcr recognitionEngine = new AsposeOcr();
// Eğim açısını hesapla
float skew = recognitionEngine.CalculateSkew("C:\\Files\\OCR\\source.png");
// Açıyı göster
Console.WriteLine($"Skew angle: {skew:N1}°");
Skew angle: 5.8°
C#’ta Otomatik Eğim Düzeltme
Otomatik çarpıklık düzeltmesi için, aşağıda verilen adımları izleyerek tanıma ayarlarında RecognitionSettings.AutoSkew özelliğini etkinleştirebiliriz:
- Öncelikle, AsposeOCR sınıfının bir örneğini oluşturun.
- Ardından, RecognitionSettings sınıfının bir nesnesini başlatın.
- Ardından, AutoSkew özelliğini true olarak ayarlayın.
- Bundan sonra, kaynak görüntü ve RecognitionSettings nesnesi ile RecognizeImage() yöntemini çağırın.
- Son olarak, tanınan metni gösterin.
Aşağıdaki örnek kod, C# dilinde otomatik eğme düzeltmesinin nasıl uygulanacağını gösterir.
// Bu kod örneği, otomatik eğim düzeltmesinin nasıl uygulanacağını gösterir.
// AsposeOcr'un bir örneğini oluşturun
AsposeOcr recognitionEngine = new AsposeOcr();
// Tanıma ayarlarında otomatik eğrilik düzeltmeyi etkinleştirin
RecognitionSettings recognitionSettings = new RecognitionSettings();
recognitionSettings.AutoSkew = true;
// Resmi tanı
RecognitionResult result = recognitionEngine.RecognizeImage("C:\\Files\\OCR\\source.png", recognitionSettings);
// Tanınan metni göster
Console.WriteLine(result.RecognitionText);
C#’ta Önişleme Filtresi ile Otomatik Eğim Düzeltme
Alternatif olarak, otomatik eğrilik düzeltme için AutoSkew ön işleme filtresini uygulayabilir ve aşağıda verilen adımları izleyerek düzeltilen görüntüyü kaydedebiliriz:
- Öncelikle, AsposeOCR sınıfının bir örneğini oluşturun.
- Ardından, PreprocessingFilter sınıfının bir nesnesini başlatın.
- Ardından, AutoSkew() filtresini ekleyin.
- Bundan sonra, filtreyi kaynak görüntüye uygulamak için PreprocessImage() yöntemini çağırın.
- Son olarak, düzeltilen görüntüyü kaydedin.
Aşağıdaki örnek kod, C# dilinde ön işleme filtresiyle otomatik eğrilik düzeltmenin nasıl uygulanacağını gösterir.
// Bu kod örneği, ön işleme filtresini kullanarak otomatik eğrilik düzeltmenin nasıl uygulanacağını ve düzeltilen görüntünün nasıl kaydedileceğini gösterir.
// AsposeOcr'un bir örneğini oluşturun
AsposeOcr recognitionEngine = new AsposeOcr();
// Eğrilik düzeltme filtresi ekle
Aspose.OCR.Models.PreprocessingFilters.PreprocessingFilter filters = new Aspose.OCR.Models.PreprocessingFilters.PreprocessingFilter();
filters.Add(Aspose.OCR.Models.PreprocessingFilters.PreprocessingFilter.AutoSkew());
// Önceden işlenmiş görüntüyü dosyaya kaydet
using (MemoryStream ms = recognitionEngine.PreprocessImage("C:\\Files\\OCR\\source.png", filters))
{
using (FileStream fs = new FileStream("C:\\Files\\OCR\\result.png", FileMode.Create, FileAccess.Write))
{
ms.WriteTo(fs);
}
}
C#’ta Otomatik Eğim Düzeltme ile Görüntü Metnini Tanıma
AutoSkew ön işleme filtresini uygulayabilir ve aşağıda verilen adımları izleyerek görüntü metnini tanıyabiliriz:
- Öncelikle, AsposeOCR sınıfının bir örneğini oluşturun.
- Ardından, PreprocessingFilter sınıfının bir nesnesini başlatın.
- Ardından, AutoSkew() filtresini ekleyin.
- Bu sırada, RecognitionSettings sınıfının bir örneğini oluşturun.
- Ardından, PreprocessingFilters özelliğine filtreler atayın.
- Bundan sonra, kaynak görüntü ve RecognitionSettings nesnesi ile RecognizeImage() yöntemini çağırın.
- Son olarak, tanınan metni gösterin.
Aşağıdaki örnek kod, otomatik eğiklik düzeltmesinin nasıl uygulanacağını ve C# dilinde metnin nasıl tanınacağını gösterir.
// Bu kod örneği, ön işleme filtresini kullanarak otomatik eğrilik düzeltmesinin nasıl uygulanacağını ve görüntünün nasıl tanınacağını gösterir.
// AsposeOcr'un bir örneğini oluşturun
AsposeOcr recognitionEngine = new AsposeOcr();
// Eğrilik düzeltme filtresi ekle
Aspose.OCR.Models.PreprocessingFilters.PreprocessingFilter filters = new Aspose.OCR.Models.PreprocessingFilters.PreprocessingFilter();
filters.Add(Aspose.OCR.Models.PreprocessingFilters.PreprocessingFilter.AutoSkew());
// Tanıma ayarlarına ön işleme filtreleri ekleyin
RecognitionSettings recognitionSettings = new RecognitionSettings();
recognitionSettings.PreprocessingFilters = filters;
// Resmi tanı
RecognitionResult result = recognitionEngine.RecognizeImage("C:\\Files\\OCR\\source.png", recognitionSettings);
// Sonuçları göster
Console.WriteLine(result.RecognitionText);
C#’ta Manuel Eğim Düzeltme
Manuel eğrilik düzeltme için, aşağıda verilen adımları izleyerek tanıma ayarlarında SkewAngle özelliğini belirterek eğrilik açısını manuel olarak tanımlayabiliriz:
- Öncelikle, AsposeOCR sınıfının bir örneğini oluşturun.
- Ardından, RecognitionSettings sınıfının bir nesnesini başlatın.
- Ardından, SkewAngle özelliğini ayarlayın.
- Bundan sonra, kaynak görüntü ve RecognitionSettings nesnesi ile RecognizeImage() yöntemini çağırın.
- Son olarak, tanınan metni gösterin.
Aşağıdaki örnek kod, C# dilinde el ile eğrilik düzeltmesinin nasıl uygulanacağını gösterir.
// Bu kod örneği, el ile eğim düzeltmenin nasıl uygulanacağını gösterir.
// AsposeOcr'un bir örneğini oluşturun
AsposeOcr recognitionEngine = new AsposeOcr();
// Eğim açısını manuel olarak ayarlayın
RecognitionSettings recognitionSettings = new RecognitionSettings();
recognitionSettings.SkewAngle = 6;
// Resmi tanı
RecognitionResult result = recognitionEngine.RecognizeImage("C:\\Files\\OCR\\source.png", recognitionSettings);
// Sonuçları göster
Console.WriteLine(result.RecognitionText);
C#’ta Ön İşleme Filtresi ile Manuel Eğim Düzeltme
Rotate ön işleme filtresini kullanarak görüntüyü belirtilen dereceye döndürerek eğiklik açısını manuel olarak da tanımlayabiliriz.
Eğim düzeltmesini manuel olarak uygulamak için lütfen aşağıda verilen adımları izleyin:
- Öncelikle, AsposeOCR sınıfının bir örneğini oluşturun.
- Ardından, PreprocessingFilter sınıfının bir nesnesini başlatın.
- Ardından, Rotate() filtresini ekleyin.
- Bu sırada, RecognitionSettings sınıfının bir örneğini oluşturun.
- Ardından, PreprocessingFilters özelliğine filtreler atayın.
- Bundan sonra, kaynak görüntü ve RecognitionSettings nesnesi ile RecognizeImage() yöntemini çağırın.
- Son olarak, tanınan metni gösterin.
Aşağıdaki örnek kod, C# dilinde ön işleme filtresiyle el ile eğrilik düzeltmesinin nasıl uygulanacağını gösterir.
// Bu kod örneği, el ile eğrilik düzeltmenin nasıl uygulanacağını ve görüntü metninin nasıl tanınacağını gösterir.
// AsposeOcr'un bir örneğini oluşturun
AsposeOcr recognitionEngine = new AsposeOcr();
// Görüntüyü saat yönünün tersine 90 derece döndürün
Aspose.OCR.Models.PreprocessingFilters.PreprocessingFilter filters = new Aspose.OCR.Models.PreprocessingFilters.PreprocessingFilter();
filters.Add(Aspose.OCR.Models.PreprocessingFilters.PreprocessingFilter.Rotate(-90));
// Hata ayıklama amacıyla önceden işlenmiş görüntüyü dosyaya kaydedin
using (MemoryStream ms = recognitionEngine.PreprocessImage("C:\\Files\\OCR\\source.png", filters))
{
using (FileStream fs = new FileStream("C:\\Files\\OCR\\result.png", FileMode.Create, FileAccess.Write))
{
ms.WriteTo(fs);
}
}
// Tanıma ayarlarına ön işleme filtreleri ekleyin
RecognitionSettings recognitionSettings = new RecognitionSettings();
recognitionSettings.PreprocessingFilters = filters;
// Resmi tanı
RecognitionResult result = recognitionEngine.RecognizeImage("C:\\Files\\OCR\\source.png", recognitionSettings);
// Sonuçları göster
Console.WriteLine(result.RecognitionText);
Ücretsiz Değerlendirme Lisansı Alın
Aspose.OCR for .NET’i değerlendirme sınırlamaları olmaksızın denemek için ücretsiz bir geçici lisans alabilirsiniz.
Çözüm
Bu makalede, şunların nasıl yapıldığını öğrendik:
- OCR gerçekleştirin ve resimlerdeki metni tanıyın;
- filtreler uygulayın ve görüntüleri işleyin;
- tanıma ayarlarını kullanın;
- C# kullanarak düzeltilmiş görüntüleri kaydedin.
C# kullanarak görüntü işlemede eğrilik düzeltmenin yanı sıra, belgeleri kullanarak Aspose.OCR for .NET API hakkında daha fazla bilgi edinebilirsiniz. Herhangi bir belirsizlik durumunda, lütfen ücretsiz destek forumumuzda bizimle iletişime geçmekten çekinmeyin.