![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
На цветном Bitmap есть черные линии, как их выловить программой ? [D6, WinXP]
SiDoff © (2004-03-11 19:29:00)Есть цветная картинка (рожа человеческая). На рожу проецируют с промежутком черные линии. Потом ЕТО фотографируют. На полученном bitmap'e надо эти черные линии програмно выловить.
Может кто занимался этим ? Посоветуйте !
Я нахожу яркость пикселя = 0.3*r+0.59*g+0.11*b
если центр чёрной линии то это значение min
если центр промежуточной линии (белой) линии то это значение max
Вообщем, таким макаром хорошо выделяются только места четкие, а где, например , тень - там БАЙДА.
Mihey (2004-03-13 22:29:00) [1]Подойдёт любая графическая библиотека: ImageEn, Envision Graphic Library, но такаие вещи обычно делают через готовые алгоритмы, например, вот тут:
http://delphibase.endimus.ru(раздел Мультимедиа)
SiDoff (2004-03-13 21:41:00) [2]Ладно, пасиба. Буду мучить пока, вдруг да че выйдет. Кстати не подскажешь нормальный компонент для увеличения резкости (типа Photoshop'ской), гаммы и прочее.
Mihey (2004-03-12 22:41:00) [3]Забыл добавить, что проект использует Graphic32, он нужен для компиляции. Скачать можно с: www.g32.org.
Mihey (2004-03-12 22:16:00) [4]В общем, умаялся я с этим делом. В принципе, линии выделяются. Обработка идёт в два этапа - выделение тёмных областей и утончение тёмных областей, в результате чего и получаются линии. Могу посоветовтаь увеличить изображение и обработать, но тогда программу переписать нужно так, чтобы утончение линии давала линию в два-три пикселя толщиной.
http://www.hot.ee/mvps16/liner.rar
Кроме того, по прежнему остаются те тёмные области. Я пробовал улучшать гамму - рассмотрел прекрасно ухо, но линий там нет, так что с ними остаётся делать только одно - стереть и попытаться соединить торчащие концы. Это можно сделать при помощи средней линии - отсчитывать количество параллельных линий от центральной, например:
Имеем разрыв и центральную линию:
| | |
| | |
| | |
|
|
|
| | |
| | |
Отсчитываем концы:
| | |
| | |
| |< 1ая |
|
|
|
| | < 1ая |
| | |
Соединяем концы линией:
| | |
| | |
| |< 1ая |
| |
| |
| |
| | < 1ая |
| | |
Трудности возникнут с определением обрыва. Идей мало тут. Можно попробовать пройтись по длине линии сверху вниз.
Могу ещё помочь. Тебе зачем это надо? Наверное, что-то будешь делать с изображениями. Советую не пытаться написать программу, которая полностью сделает всю работу, а сделать что-то вроде инструментария для ускореной обработки.
SiDoff (2004-03-12 15:03:00) [5]Вот архив с картинкой http://www.siddelphi.narod.ru/_image.exe
243Kb
3 минуты качается
Mihey (2004-03-12 13:08:00) [6]Не могу скачать, загрузи на www.by.ru, можешь также сконвертировать в PNG без потери качества или запаковать. Большая картинка очень пригодилась бы.
SiDoff (2004-03-12 01:56:00) [7]Нет не пробуй )
SiDoff (2004-03-12 01:37:00) [8]Если тормозит www.siddelphi.narod.ru
пробуй http://www.siddelphi.boom.ru
Mihey (2004-03-12 01:35:00) [9]> сначала её надо найти, затем от неё в ЛЕВО и в ПРАВО ищутся линии).
Это очень важное замечание. Т.е. параллельно (в объёме, не на картинке) синей линии идут остальные? Это упрощает задачу офигенно. Завтра к поздно вечером предложу что-нить новенькое.
SiDoff (2004-03-12 01:08:00) [10]Попробуй с новой картинкой 720x520 http://www.siddelphi.narod.ru, но надо ЧЁРНЫЕ линии (там на bmp есть синяя линия - [r=0 g=0 и b~255] сначала её надо найти, затем от неё в ЛЕВО и в ПРАВО ищутся линии). Если будет так же то твоя прога чемто лучше.
Mihey (2004-03-12 00:29:00) [11]Мне удалось облиновать до такого уровня:
http://www.hot.ee/mvps16/scr1.png
Если это устроит, то выложу исходник.
Mihey (2004-03-11 22:46:00) [12]Вообще, весьма интересная вещь. Могу посоветовать сканит каждую полосу и составлять график перепадов. Ладно, я через часик ещё напишу, поработаю с этим.
SiDoff (2004-03-11 21:43:00) [13]Нет конечно !
Как выглядят линии на картинке можно глянуть тут:
www.siddelphi.narod.ru
Mihey (2004-03-11 20:07:00) [14]Линии прямые?