Я работаю над проектом OCR для своего локального языка Amharic, и я хочу обнаружить и удалить подчеркивание из образа документа .... У меня есть следующий код, но он может работать только для одного слова. может ли кто-нибудь сказать мне, как это сделать, используя профиль проецирования для всего текстового документа?Как удалить подчеркивания в изображении документа с помощью профиля проецирования?
class UnderLineRemoval
{
public static Bitmap removeUnderline(Bitmap bm)
{
//declarations
List<int> rowSum = new List<int>();
int count = 0;
int roi = bm.Height/2;
Color pixelColor;
//perform horizontal projections for points below roi
for (int y = roi; y < bm.Height; y++)
{
for (int x = 0; x < bm.Width; x++)
{
pixelColor = bm.GetPixel(x, y);
if (pixelColor.R == 0 && pixelColor.G == 0 && pixelColor.B == 0)
count++;
}
rowSum.Add(count);
count = 0;
}
// check if the sums are greater than 70% of the image width
for (int i = 0; i < rowSum.Count; i++)
{
if (rowSum[i] > bm.Width * 0.7)
{
break;
}
roi++;
}
// return if no underline are detected
if (roi == bm.Height)
return bm;
// crop image if underline are detected
Rectangle cropRect = new Rectangle(0, 0, bm.Width, bm.Height - ((bm.Height)-(roi - 2)));
if (cropRect.Height ==0 && cropRect.Y == 0)
return bm;
bm = bm.Clone(cropRect, bm.PixelFormat);
return bm;
}
}
Что делать, если текст на изображении слегка повернут, например. 2 °? –
вы можете использовать алгоритмы обнаружения перекоса и коррекции ... но мой вопрос касается снятия подчеркивания .... –