![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
||||
|
||||
![]() сабж =) имеется картинка (в аттаче), каким образом можно найти и удалить с неё эти линии? (под удалить подразумевается заливка белым цветом, НО! только этих линий. то есть чтобы при заливке буквы того же цвета, которые прилегают к линии, не пострадали) еще фишка в том что иногда эти линии могут иметь вид синусоиды.
вообще не представляю себе как такое сделать средствами Delphi/C++. что посоветуете? p.s. картинка всегда ч/б ну то есть может jpg сейчас не лучший вариант, но все черные цвета на картинке всегда clBlack, а белые - clWhite =) Последний раз редактировалось NekitoSSSS, 06.01.2011 в 19:05. |
#2
|
|||
|
|||
![]() Если судить по приложенной картинке, в глаза бросается тот факт, что линии довольно жирные и от этого можно попытаться плясать. Алгоритм будет такой:
- удалить все пикселы которые не имеют "жирного соседа" - результат наложить на оригинал с побитовым XOR Еще одна идея, можнопросматривать пикселы окном 3х3 и когда в окне окажутся все черные пикселы (нарвались на линию), рекурсивно пройтись по всем прилегающим черным пикселам с заменой цвета. |
#3
|
||||
|
||||
![]() кхм. тут еще одна загвоздка в том что линия не обязательно такая жирная. бывают и тоньше, но главное отличие от символов типа Ш в том, что эта линия(которую надо удалить) обычно длиннее. раза в 1.5 - ∞ . ну на примере моем это очень ярко выражено. вот именно от этого следует отталкиваться.
|
#4
|
||||
|
||||
![]() Не думаю, что окно 3х3 как-то позволит отличить линию от хвоста буквы которая влипла в нее. Тут надо что-то с обходом дерева мудрить. отсекать все ветви оставляя только ствол, получается этакий поиск наиболее длинной непрерывной линии, она и будет впоследствии затиратся.
Кстати, у вас рисунок не 2-цветный. Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#5
|
||||
|
||||
![]() Удалить линию можно, то вот "вытащить" текст, что был под линией уже намного сложнее. А все это только потому, что тот же jpg формат все очень сильно сжимает и естественно нельзя вытащить 1-2-Nный слой картинки.
Помогаю за Спасибо ![]() |
#6
|
||||
|
||||
![]() А если скажем сделать проход по контуру и усреднение применить для резких переходов?
Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#7
|
||||
|
||||
![]() Цитата:
Цитата:
Цитата:
Цитата:
Последний раз редактировалось NekitoSSSS, 07.01.2011 в 16:06. |
#8
|
||||
|
||||
![]() Нет, я несколько про другое. Я про то как отличить продолжение линии но под небольшим углом, от буквы которая влипла в линию.
Поскольку линия это совокупность точек с координатами Х,У, причем одна из координат будет постоянной с небольшой погрешностью, то вторая будет постоянно уменьшаться или увеличиваться. Допустим мы разобьем нашу линию на участки по 50 точек и если на этом участке мы имеем пик Х или У, то значит это буква. Остается определится с началом и концом этого пика и заменить все значения пиковых координат на среднее между началом и концом пика. Получится этакое сглаживание. Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#9
|
||||
|
||||
![]() ааа. вы про резкие "повороты" линии =) а кодом можно?
|
#10
|
|||
|
|||
![]() Я бы пошел другим путем, не стал бы думать о формах, линиях, изгибах, вместо этого, пробегая картинку, определял бы методом заливки площадь областей покрытых черными пикселями, и если эта площадь больше N пикселей, значит это линия., где N - максимальное кол-во пикселей, используемое для начертания одной буквы. А вообще, если надо восстановить текст, то легче его пропустить через FineReader или ему подобное ПО, и после доредактировать.
|
#11
|
||||
|
||||
![]() Цитата:
вот например. имеем букву Код:
П Код:
___ да и сама заливка слишком медленный процесс. это считай от каждого a[i,j] мы будем заливать а потом сравнивать картинки..... %) Последний раз редактировалось NekitoSSSS, 08.01.2011 в 12:01. |
#12
|
||||
|
||||
![]() Может капчу покажем???
|