Discussion:
Повышение четкости.
(слишком старое сообщение для ответа)
Yuriy Mironenko
2005-10-13 08:47:40 UTC
Permalink
Есть картинка в 256-уровневом grayscale. Хочется превратить ее в обычную черно-белую, но так, "чтобы было круто".

Другими словами, как по отсканированной в 256градациях серого странице книги
получить черно-белую картинку, возможно более похожую на ту форму, с которой
книгу печатали.

Интуиция говорит, что можно попробовать взять квадратик например 11 на 11
пикселей и несколькослойным перцептроном получить на выходе квадратик 3 на 3 из
нулей и единиц, который соответствовал бы центру квадрата-входа. Потом сдвинуть
вход на три пикселя и получить следующий квадратик...

Обучить этот перцептрон на десятке типичных страниц.

Что говорит вам ваша, возможно более тренированная интуиция? Стоит попробовать?
Andrew Filinsky
2005-10-15 06:23:18 UTC
Permalink
┌┴┴┴┴┴┴┴┴┐ С горячим электронным приветом!
└┬┬┬┬┬┬┬┬┘ Цитирую: Yuriy Mironenko -> All, 13 Окт 2005

YM> Другими словами, как по отсканированной в 256градациях серого
YM> странице книги получить черно-белую картинку, возможно более похожую
YM> на ту форму, с которой книгу печатали.

YM> Интуиция говорит, что можно попробовать взять квадратик например 11 на
YM> 11 пикселей и несколькослойным перцептроном получить на выходе
YM> квадратик 3 на 3 из нулей и единиц, который соответствовал бы центру
YM> квадрата-входа. Потом сдвинуть вход на три пикселя и получить
YM> следующий квадратик...

YM> Обучить этот перцептрон на десятке типичных страниц.

Эта задача в том виде, как ты её предложил, решается без использования
перцептрона. Перцептрон тоже можно использовать, но незачем :)

С моих слов записано верно. Andrew Filinsky.

... [Брутальные Маргиналы Team] [Черный список GO.FLIRT] [Pipe Smokers Team]
Yuriy Mironenko
2005-10-21 02:44:48 UTC
Permalink
AF> Эта задача в том виде, как ты её предложил, решается без использования
AF> перцептрона. Перцептрон тоже можно использовать, но незачем :)

Вполне вероятно. Метод в студию :-)
Hу или идею метода.
Andrew Filinsky
2005-10-30 18:20:37 UTC
Permalink
┌┴┴┴┴┴┴┴┴┐ С горячим электронным приветом!
└┬┬┬┬┬┬┬┬┘ Цитирую: Yuriy Mironenko -> Andrew Filinsky, 21 Окт 2005

AF>> Эта задача в том виде, как ты её предложил, решается без
AF>> использования перцептрона. Перцептрон тоже можно использовать, но
AF>> незачем :)

YM> Вполне вероятно. Метод в студию :-)
YM> Hу или идею метода.

Hу, попробую описать идею метода :)

Берем кучу статистики. Предположим, у тебя _уже есть_ серые битмэпы и
попиксельно им соответствующие черно-белые. Это ключевой и, повторю, наиболее
труднореализуемый технический момент. Hужно иметь в виду, что точно такой же
набор данных требуется и в случае обучения перцептрона.

Из имеющейся статистики строим кучу образцов, кои представляют собой, как ты
предложил, квадраты размером 2*N+1 клеток, N натуральное, в твоём случае N=5,
значения клеток - число в диапазоне 0..255, градация серого. Это вход образца.
Для каждого образца строим выход. Ты предложил выход в виде квадрата 3*3, я же
предлагаю квадрат размером 1*1 ;) - точка, соответствующая центру входного
образца, значение - 0 или 1, чёрный или белый цвет. Точка ничем не хуже
квадрата 3*3, а лучше она тем, что на тех же данных можно собрать больше
статистики, и обработка входа в выход существенно упрощается.

Статистика собрана. Она включает в себя миллионы образцов вход/выход.

Дальше нужно ввести функцию нечеткого сравнения образцов. Это функция, которая
на входе принимает два образца, а на выходе выдает вещественное число - оценку
схожести. Какую функцию выбрать для нечеткого сравнения образцов - вопрос
особый. В качестве первого и достаточно мощного решения я предлагаю
использовать функцию вычисления среднеквадратичного отклонения одного образца
от другого. (Это достаточно тривиальная функция, но если непонятно - по твоему
запросу объясню подробнее) Если быть точным, в качестве оценки нужно брать
обратную функцию к функции среднеквадратичного отклонения ;)

Теперь собственно алгоритм преобразования. Он сводится к вычислению значения в
данной точке (0/1) по входной матрице 2*N+1. Hу, хотя бы так. Сравниваем все
образцы из статистики с данным обрацом. Образца с нулевым выходом суммируем,
образцы с единичным выходом - вычитаем. Если итоговое значение суммы меньше
нуля - результат равен нулю. Если итоговое значение суммы больше нуля -
результат равен единице. Если итоговое значение суммы равно нулю - результат
выбирается случайным образом между нулём и единицей :) Всё :)

Алгоритм придуман глядя в потолок, имеет массу путей улучшения, но даже в
предложенном виде он обеспечит тебе осмысленный результат, то есть - работает.
Основной недостаток по сравнению с гипотетическим решением, основанным на
перцептроне - это ресурсоёмкость. Время работы перцептрона не зависит от
количества статистики, на которой он обучался, время работы данного алгоритма -
прямопропорционально количеству образцов.

Обсудим? :)

С моих слов записано верно. Andrew Filinsky.

... [Брутальные Маргиналы Team] [Черный список GO.FLIRT] [Pipe Smokers Team]
Yuriy Mironenko
2005-10-31 20:40:08 UTC
Permalink
AF> Обсудим? :)

Можно :-)
Следует учитывать, правда, что на практике распознаванием образов я не
занимался. Читал довольно много, да, но - не занимался.

Идея в том, что некоторые из образцов, очевидно, будут близки "по смыслу".
Предположительно, нейросеть в состоянии выделить "кластеры" таких признаков.
Предположительно, также, она в состоянии "обобщить" опыт - то есть, тот
результат, который получится на образцах, будет представлять нечто вроде
апроксимированной функции - а нейросеть, в принципе, типа "та самая функция".
Andrew Filinsky
2005-11-01 20:35:25 UTC
Permalink
┌┴┴┴┴┴┴┴┴┐ С горячим электронным приветом!
└┬┬┬┬┬┬┬┬┘ Цитирую: Yuriy Mironenko -> Andrew Filinsky, 31 Окт 2005

AF>> Обсудим? :)

YM> Можно :-)
YM> Следует учитывать, правда, что на практике распознаванием образов я не
YM> занимался. Читал довольно много, да, но - не занимался.

YM> Идея в том, что некоторые из образцов, очевидно, будут близки "по
YM> смыслу". Предположительно, нейросеть в состоянии выделить "кластеры"
YM> таких признаков. Предположительно, также, она в состоянии "обобщить"
YM> опыт - то есть, тот результат, который получится на образцах, будет
YM> представлять нечто вроде апроксимированной функции - а нейросеть, в
YM> принципе, типа "та самая функция".

Собственно, это и есть движущая идея любого перцептрона :)
Всё правильно, добавить нечего. Вперёд :)

С моих слов записано верно. Andrew Filinsky.

... [Брутальные Маргиналы Team] [Черный список GO.FLIRT] [Pipe Smokers Team]
Yuriy Mironenko
2005-11-02 17:26:26 UTC
Permalink
AF> Всё правильно, добавить нечего. Вперёд :)

Эээ, куда?
Планировалось, вроде бы, обсуждение?

Даже если и. Остаются вопросы - сколько слоев, какую активирующую функцию и
вообще - советы, мнения, идеи...
Alexander Zatvornitskiy
2005-11-03 17:02:03 UTC
Permalink
Привет Yuriy!

02 ноября 2005 в 20:26, Yuriy Mironenko в своем письме к Andrew Filinsky писал:
AF>> Всё правильно, добавить нечего. Вперёд :)
YM> Эээ, куда?
YM> Планировалось, вроде бы, обсуждение?
Вроде бы, планировалось чёто сделать? ;)
YM> Даже если и. Остаются вопросы - сколько слоев, какую активирующую
YM> функцию и вообще - советы, мнения, идеи...
моё мнение -
c=color(x,y)
if c<porog then out_color(black)
else out_color(white)
а дальше уже пробовать на реальных данных и смотреть что конкретно не подходит.

Alexander, ***@bk.ru
Yuriy Mironenko
2005-11-04 08:23:22 UTC
Permalink
AZ> моё мнение -
AZ> c=color(x,y)
AZ> if c<porog then out_color(black)
AZ> else out_color(white)
AZ> а дальше уже пробовать на реальных данных и смотреть что конкретно не
AZ> подходит.

Порог надо выбрать так, чтобы линии на итоговом рисунке смотрелись четко и
ровно.
Алгоритм такого выбора в студию...

Loading...