Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Программирование Новый топик    Ответить
Топик располагается на нескольких страницах: 1 2 3 4 5 6 7 8      [все]
 Четверговый архивариус  [new]
mayton
Member

Откуда: loopback
Сообщений: 39224
Привет друзья.

Дима-Т, Сова, Илья, Иван-ФХC, ПТР-128, Эхп98, Барлон, Зяма и прочие простите кого забыл.

В продолжение топиков:

Я задаю тему.

Эксперименты с ГПСЧ, Системами счисления, кодеками и архиваторами. Макеты. Proo-of-conept. Работающее
приложение. Здесь мы будем обкатывать наши идеи в виде реализации.

Некоторые поинты.

1) Базовый тип. Для формального доказательства наших гипотез, нам не нужны биты.
Нам хватит строк. std::string, String, e.t.c. Пример:
string s="00101010010101010";

Любой сможет на них легко делать булевы
операции и что главное - конкатенации и обрезку. Памяти нам хватит. Оверхед составит
порядка 8-16 раз ну и пофиг.

А биты пойдут потом. Когда гипотеза взлетит.

2) Визуализация.. Я - большой фанат научной графики и визуализации идей. Зачастую
бывает что данные представленные картинкой несут больше ценных сведений чем куча
умных словесных тезисов. Поэтому черно-белая (bi-tonal) картинка придаст больше
наглядности для энтропии и преобладания каких-то свойств в бинарном файле.

Для тех, кому лень кодить графические кодеки - берите формат PPM. Это матрица пикселов в тексте.
Или рисуйте в браузере на канвасе. Примеры - тривиальны.

3) Язык. Любой из популярных. Можно даже JavaScript, главное чтоб мы смогли хотть как-то протестить.

4) Сорцы.. Как всегда я поднимаю репку. Комитте сюда.
https://sourceforge.net/p/psevdo-random-arc/code/HEAD/tree/

5) Сторонние библиотеки. Желательно чтоб были сорцы чтоб понять идею.


Go-go кодить!

Теоретики - курят в сторонке.
11 янв 18, 23:33    [21099367]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
mayton
Member

Откуда: loopback
Сообщений: 39224
В продолжение топиков 210891852109314621093146
11 янв 18, 23:42    [21099384]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
Dima T
Member

Откуда:
Сообщений: 13348
Идея архиватора с ГПСЧ не рабочая, не будет сжатия. Писал тут 21093742 и тут 21094323

Если кратко: длина подстроки исходных данных, которая совпадет с последовательностью из ГПСЧ вероятнее всего будет меньше или равна длине инфы требуемой для инициализации ГПСЧ. Т.е. меняем M бит на M бит.

Возможны варианты более длинных совпадений, но каждый доп.бит совпадения уменьшает вдвое вероятность что следующий бит совпадет.

PS Собственных экзотических идей по данному вопросу у меня нет.
12 янв 18, 11:31    [21100619]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
exp98
Member

Откуда:
Сообщений: 1609
mayton
архиваторами
2) Визуализация.
кодить

Простите за немного не в тему.
Насчёт последнего - каждый занимается тем, чего ему нехватает)

Архивация, п.2):
Внезапно вспомнил давно уопробированные варианты. К началу 90-х (640К оперативка, 10М диск либо ваще только флоппи) ГУИшные проги делали с внешним хэлп-файлом (он же и ресурсный файл). Ради экономии места и/или защиты от самостоятельного пополнения использовался простейший вариант сжатия по повторяющимся частям слов. Просто видно было, как по мере листания файла вначале шли боле-мене узнававемые чуть не целые слова, затем превращаясь в разноообразные куски букв. Вот и вся визуализация.

Реализация примитивная, сжатие сильное, однако отнюдь не максимальное. Надеюсь с идеей всё ясно, исходники, извините, далече.
-----------

ГПСЧ в эксэле: щас найду картинку ...
Раздел "МС Офис"
тема generator-sluchaynyh-chisel-v-excel
сообщение 20570120

На кртинке просто фрагмент теоремы, что м.ож. одинаково распределённых случ.величин имеет норм.распр-е. Всю жизнь верил теории, недавно взял, да и посмотрел кусочек.
12 янв 18, 12:15    [21100855]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
exp98
Member

Откуда:
Сообщений: 1609
К вопросу о приложениях ГЧ.
Ещё давнее вспомнил. Была, не мною, предложена модель в целях локации моделировать пересечённую местность вариантом итеративной 2-мерной корелляционной модели с параметрами, на основе ГПСЧ. Там интересные картинки рисовывались, всевозможные площадные регионы типа овалов, рукавов, амёб и т.д., каждый регион со своими корелл. характеристиками. В каком-то случае возник "треуг-к Серпинского". Ну и как подзадача было облагородить сишный ГЧ.
Надо сказать, как и в случае с натуральными фракталами, под заданную картинку модель надо было подбирать (читай перебором).
За ради модели и исходников надо долго и физически рыться, если сохранилось.
12 янв 18, 13:10    [21101093]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
Akina
Member

Откуда: Зеленоград, Москва, Россия
Сообщений: 18572
Dima T
Идея архиватора с ГПСЧ не рабочая, не будет сжатия.
Угу...
Очень давно, когда архиваторы были слабыми, а я совсем зелёным, у меня зарождалась аналогичная идея. Но её убил простой эксперимент. Взял я файл (большой текст), обмял его архиватором (ДОСовым RAR) с максимальными настройками, потом отXORил его рандомом (помнится, сделал аж 100 копий, каждая обработана со своим seed) и попытался обжать тем же архиватором с теми же настройками... посмотрел на результат - и зарёкся плодить дурные идеи.
12 янв 18, 13:19    [21101146]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
Иван FXS
Member

Откуда:
Сообщений: 1743
Akina,

а осталась в вашей памяти что-то более конкретное про результат того эксперимента: типа -- ни одна из 100 копий не сжалась ни на один бит? Мы ведь обсуждаем вопрос "можно ли случайную строку сжать", а не "можно ли её сжать на десятки процентов" ...
12 янв 18, 14:48    [21101746]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
Akina
Member

Откуда: Зеленоград, Москва, Россия
Сообщений: 18572
Иван FXS
а осталась в вашей памяти что-то более конкретное про результат того эксперимента: типа -- ни одна из 100 копий не сжалась ни на один бит?

Исходный файл - форматированный ASCII-текст размером порядка 1 Мбайт, в сжатом виде порядка 80 кбайт.
Среда программирования (и ГСЧ) - Borland Turbo BASIC 1.0.
Максимальное дополнительное сжатие - порядка 1.6% (на одном файле).
Количество файлов, размер которых уменьшился - порядка 70%.
Среднее уменьшение размера файла, по всему массиву - порядка 0,2%.
Среднее уменьшение размера файла, только по дополнительно сжатым - порядка 0,3%.
12 янв 18, 15:23    [21101900]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
д0kХ
Guest
Dima T
Идея архиватора с ГПСЧ не рабочая, не будет сжатия. Писал тут 21093742 и тут 21094323

Если кратко: длина подстроки исходных данных, которая совпадет с последовательностью из ГПСЧ вероятнее всего будет меньше или равна длине инфы требуемой для инициализации ГПСЧ. Т.е. меняем M бит на M бит.

Возможны варианты более длинных совпадений, но каждый доп.бит совпадения уменьшает вдвое вероятность что следующий бит совпадет.

PS Собственных экзотических идей по данному вопросу у меня нет.

+1

exp98
К вопросу о приложениях ГЧ.
Ещё давнее вспомнил. Была, не мною, предложена модель в целях локации моделировать пересечённую местность вариантом итеративной 2-мерной корелляционной модели с параметрами, на основе ГПСЧ. Там интересные картинки рисовывались, всевозможные площадные регионы типа овалов, рукавов, амёб и т.д., каждый регион со своими корелл. характеристиками. В каком-то случае возник "треуг-к Серпинского". Ну и как подзадача было облагородить сишный ГЧ.
Надо сказать, как и в случае с натуральными фракталами, под заданную картинку модель надо было подбирать (читай перебором).
За ради модели и исходников надо долго и физически рыться, если сохранилось.

+1

Извини mayton, но задача-идея писать на эту тему код - попытка
поставить телегу впереди лошади.

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

Если очень глубоко копать, тему, то точка перехода качества сжатия,
в качество востанновленной информации
находится где то по этой методике.
И нужно будет минимум 2 прохода по всему объему информации ,
что бы поймать фрактальные зависимости.
12 янв 18, 19:27    [21102879]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
д0kХ
Guest
Если стоит вопрос масимального сжатия без потерь,
то это другая область математики - многомерные пространства.
Тут еще больше украдено до нас.

Ищи мат выкладки по алгоритма ADSL и прочие алгоритмы укладки
шаров в многомерных пространствах.

Усидеть одновременно на 2 стульях если и получится,
то код никакого фундаметального и
практического интереса представлять не будет.
12 янв 18, 19:37    [21102902]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
mayton
Member

Откуда: loopback
Сообщений: 39224
д0kХ
Если стоит вопрос масимального сжатия без потерь,
то это другая область математики - многомерные пространства.
Тут еще больше украдено до нас.

Ищи мат выкладки по алгоритма ADSL и прочие алгоритмы укладки
шаров в многомерных пространствах.

Усидеть одновременно на 2 стульях если и получится,
то код никакого фундаметального и
практического интереса представлять не будет.

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

Дело в том что мы тут занимаем свою нишу. И занимаемся не математическими
открытиями а инженерией алгоритмов. Подобно конструктору Lego, мы собираем
из примитивов нечто. Это не наука. Это приспособление. Мы "приспосабливам"
для себя осколки знаний just for fun. Эволюционный путь. Отбор. Итеративный
подход. Best practices. Scrum/Agile. Это все разные названия этого процесса.

Мы не претендуем даже на строгое доказательство верности нашего пути.
Здесь нет формул. Просто скопление практик.

И я как и все другие мемберы тоже нахожусь здесь for fun. Помимо этого
я решаю параллельно еще 3-4 других задачи которые я не озвучил но они
перемежаются с обсуждаемыми хеш-тегами и рано или поздно я ими поделюсь.

Вот как то в таком вот аспекте.
12 янв 18, 23:11    [21103549]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
mayton
Member

Откуда: loopback
Сообщений: 39224
Dima T
Идея архиватора с ГПСЧ не рабочая, не будет сжатия. Писал тут 21093742 и тут 21094323

Если кратко: длина подстроки исходных данных, которая совпадет с последовательностью из ГПСЧ вероятнее всего будет меньше или равна длине инфы требуемой для инициализации ГПСЧ. Т.е. меняем M бит на M бит.

Я не собираюсь "ломать об колено" архиватор с ГПСЧ. Он вполне себе
может существовать как "концепт" для сравнения его с другими.
Я-бы поставил другую задачу. Не опровергнуть тезисы Ивана а скорее
дать ему новые идеи и тезисы. Опять-же. На практике.
12 янв 18, 23:14    [21103558]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
mayton
Member

Откуда: loopback
Сообщений: 39224
exp98
Надо сказать, как и в случае с натуральными фракталами, под заданную картинку модель надо было подбирать (читай перебором).За ради модели и исходников надо долго и физически рыться, если сохранилось.

Скриншоты сохранились?
12 янв 18, 23:17    [21103561]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
д0кХ
Guest
mayton
д0kХ
Если стоит вопрос масимального сжатия без потерь,
то это другая область математики - многомерные пространства.
Тут еще больше украдено до нас.

Ищи мат выкладки по алгоритма ADSL и прочие алгоритмы укладки
шаров в многомерных пространствах.

Усидеть одновременно на 2 стульях если и получится,
то код никакого фундаметального и
практического интереса представлять не будет.

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

Дело в том что мы тут занимаем свою нишу. И занимаемся не математическими
открытиями а инженерией алгоритмов. Подобно конструктору Lego, мы собираем
из примитивов нечто. Это не наука. Это приспособление. Мы "приспосабливам"
для себя осколки знаний just for fun. Эволюционный путь. Отбор. Итеративный
подход. Best practices. Scrum/Agile. Это все разные названия этого процесса.

Мы не претендуем даже на строгое доказательство верности нашего пути.
Здесь нет формул. Просто скопление практик.

И я как и все другие мемберы тоже нахожусь здесь for fun. Помимо этого
я решаю параллельно еще 3-4 других задачи которые я не озвучил но они
перемежаются с обсуждаемыми хеш-тегами и рано или поздно я ими поделюсь.

Вот как то в таком вот аспекте.

Я как бы о том, что мало смысла пытаться собрать пазлы брутфорсом.
Даже ради лулзов.
Универсальная Алгоритмы сжатия с потерями имеет огромный практический смысл.
Это базовая алгоритмика абстрактного и образного мышления искуственного интеллекта.
Поэтому я бы подвинул приоритет задачи в эту сторону.
12 янв 18, 23:24    [21103578]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
mayton
Member

Откуда: loopback
Сообщений: 39224
д0кХ
Я как бы о том, что мало смысла пытаться собрать пазлы брутфорсом.
Даже ради лулзов.
Универсальная Алгоритмы сжатия с потерями имеет огромный практический смысл.
Это базовая алгоритмика абстрактного и образного мышления искуственного интеллекта.
Поэтому я бы подвинул приоритет задачи в эту сторону.

Давай через пару недель. Подниму тему с lossy compression. У меня там идей еще больше...
12 янв 18, 23:27    [21103586]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
д0кХ
Guest
mayton, я бы не ввязывался в эту дискуссию ,
если бы не считал нужным лайнуть посты Dima T и exp98
дополнить их мысли мну ИМХО .
Они дело говорят , обрати внинмание на выделенное мной их постах.


Они тоже уже переросли этот топик.
12 янв 18, 23:35    [21103595]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
mayton
Member

Откуда: loopback
Сообщений: 39224
Я-ж говорю. Каждый здесь находит своё.
12 янв 18, 23:45    [21103608]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
Siemargl
Member

Откуда: 010100
Сообщений: 6065
mayton
Dima T
Идея архиватора с ГПСЧ не рабочая, не будет сжатия. Писал тут 21093742 и тут 21094323

Если кратко: длина подстроки исходных данных, которая совпадет с последовательностью из ГПСЧ вероятнее всего будет меньше или равна длине инфы требуемой для инициализации ГПСЧ. Т.е. меняем M бит на M бит.

Я не собираюсь "ломать об колено" архиватор с ГПСЧ. Он вполне себе
может существовать как "концепт" для сравнения его с другими.
Я-бы поставил другую задачу. Не опровергнуть тезисы Ивана а скорее
дать ему новые идеи и тезисы. Опять -же. На практике.

один дурак задаст столько вопросов.... (с)

уже отвечено 21082855
12 янв 18, 23:55    [21103629]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
д0кХ
Guest
mayton
Dima T
Идея архиватора с ГПСЧ не рабочая, не будет сжатия. Писал тут 21093742 и тут 21094323

Если кратко: длина подстроки исходных данных, которая совпадет с последовательностью из ГПСЧ вероятнее всего будет меньше или равна длине инфы требуемой для инициализации ГПСЧ. Т.е. меняем M бит на M бит.

Я не собираюсь "ломать об колено" архиватор с ГПСЧ. Он вполне себе
может существовать как "концепт" для сравнения его с другими.
Я-бы поставил другую задачу. Не опровергнуть тезисы Ивана а скорее
дать ему новые идеи и тезисы. Опять-же. На практике.

Имхо Иван пытается откопать и обсмаковать Гавно мамонта протухшие лулзы



+ квота для жерв информационного геноцида


Подам отличную идею — уже сейчас делить разные числа одно на другое, конвертить остатки в avi и смотреть еще не вышедшие фильмы :)

»
— Результат обсуждения Бабушкинского алгоритма сжатия на хабре.
Сам молодой гений описывает своё изобретение так:

Алгоритм™ архивации таков: любой файл представляет собой HEX-последовательность символов, переводим этот HEX в DEC, получаем неебически-большое число, дописываем перед этим число 0, — получаем число в диапазоне от 0 до 1 с огромным числом знаков после запятой, а дальше всё просто — подбираем 2 таких целочисленных числа, частное которых даст нам искомое число в диапазоне от 0 до 1 с точностью совпадений до последнего знака. Беда в подборе чисел, которое может идти и 2 часа, а может идти и 2 недели. Есть опытные образцы и работающая программа, и всё это работает.

Сжатый фильм «Клик» (Файл удалён). Тест алгоритма архивации Бабушкина.

2 марта 2013 г. поциент Вконтакте выложил ссылку на статью Криса Касперски «Могущество кодов Рида-Соломона или информация, воскресшая из пепла», прочитав которую, можно понять, что даже «придуманный» им алгоритм архивации заимствован из полушутливого раздела статьи про инопланетян.

На основе принципа работы архиватора был разработан алгоритм "Сортировка Бабушкина", имеющий уникальное время работы О(n). Главное - подобрать числа, которые при делении дадут число Бабушкина, за время, меньшее времени тепловой смерти Вселенной.

12 янв 18, 23:58    [21103636]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
exp98
Member

Откуда:
Сообщений: 1609
mayton
Скриншоты сохранились?
надо долго и физически рыться, если сохранилось. Как только так и ... ну 95-й, о чём-то говорит? Хотя в отчёте 2-3 конечно были, только это было заказное исследование ) А так, визуально помнится как выше описано. Итеративность - ключевой момент был, в принципе и своё воссоздать можно.

И да, сжатие изображений "фрактальными" методами, похоже что преимуществ по Ксж пред жпг не особо. Во всяк, в сравнимое время. Хотя идея подбираться к "неподвижной точке сжимающего отображения" в полном Банаховом пространстве очень вдохновляла в первое время. Это намёк.
13 янв 18, 19:18    [21104702]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
exp98
Member

Откуда:
Сообщений: 1609
д0кХ, пусть Иван сам делает выводы с учётом или без наших мнений. Учиться не поздно никогда и никому. К тому же его идея не в архиваторе, а в применении оного.
13 янв 18, 19:24    [21104715]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
mayton
Member

Откуда: loopback
Сообщений: 39224
Попробовал на "бумаге" систему счисления с весами Фибоначчи. Забавно. У нее есть
возможность восстанавливать трафик после сбоя. Тоесть даже если было повреждение
то имеется возможность "поймать синхроизацию" трафика как сетевых протоколах и телевидении.

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

Если пойти на хитрость и прибавить +2 то последний артефакт устраняется.
14 янв 18, 21:57    [21106023]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 55542
Блог
mayton
К сожалению имеются изначально трудности с кодированием отрицательных чисел, нуля и единицы.

Множество целых чисел гомеоморфно множеству натуральных. Всегда можно воспользоваться.
15 янв 18, 13:27    [21107479]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
exp98
Member

Откуда:
Сообщений: 1609
softwarer
Множество целых чисел гомеоморфно множеству натуральных. Всегда можно воспользоваться.
Плз, аккуратнее с общепринятыми мат.терминами! Лишь одинаковая мощность, что говорит только о БИЕКТИВНОСТИ. Даже "изо-" требует "операции", не говоря о "гомео-".
Ну или операцию тогда надо определить (весьма экзотическим способом).
15 янв 18, 13:43    [21107599]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 55542
Блог
exp98,

операция определяется легко и просто на первом курсе. Например,

НатуральноеЦелое
10
21
3-1
42
5-2
63
......


А в целом ок, принимается.
15 янв 18, 14:28    [21107823]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
exp98
Member

Откуда:
Сообщений: 1609
mayton
exp98
За ради модели и исходников надо долго и физически рыться, если сохранилось.

Скриншоты сохранились?
В общем откопал свёрнутую трубочкой распечату одного варианта. Ещё 2000 вёдер немного усилий, и можно бы восстановить скриншотики. Тем более это простой Си и сотня строк.
Но как всегда: как только, так и ...
3 май 18, 10:09    [21383532]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
mayton
Member

Откуда: loopback
Сообщений: 39224
Окей жду.
3 май 18, 11:42    [21383881]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
exp98
Member

Откуда:
Сообщений: 1609
Я сдаюсь((
Долго не могу выделить время на перевод в техт. Оказалось, что лучше бы перевести все 9 страниц, учитывая, что оно для DOS. Параметрические файлы эбсент, значения нужно подбирать, секрета никакого. Это только расчётная часть. ГУИ для изучения свойств сформированного поля шло отдельной прогой. Бледная распечатка - вот всё, что сейчас есть.

Сфотал, для примера загнал как есть в распознавалку Си/С++ на сервисе файнридера. Результат можно показывать в теме достижений ИИ. Пример в zip-вложении.

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

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

Только сейчас вспомнил, что для фото следовало подкладывать толстый лист бумаги.
24 май 18, 11:37    [21435553]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
exp98
Member

Откуда:
Сообщений: 1609
вложение

К сообщению приложен файл (Downloads.zip - 138Kb) cкачать
24 май 18, 11:37    [21435558]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
mayton
Member

Откуда: loopback
Сообщений: 39224
Ок. Спасибо. Почитаю.
24 май 18, 19:20    [21437848]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
exp98
Member

Откуда:
Сообщений: 1609
недостающие листы
лист1 лежит в предыдущем зипе.
далее ещё листы 2-8.

лист2 здесь.

К сообщению приложен файл. Размер - 136Kb
25 май 18, 13:52    [21440169]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
exp98
Member

Откуда:
Сообщений: 1609
лист3

К сообщению приложен файл. Размер - 134Kb
25 май 18, 13:52    [21440173]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
exp98
Member

Откуда:
Сообщений: 1609
лист 4

К сообщению приложен файл (img_1359-2.zip - 137Kb) cкачать
25 май 18, 13:56    [21440193]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
exp98
Member

Откуда:
Сообщений: 1609
лист 5

К сообщению приложен файл (img_1360-2.zip - 141Kb) cкачать
25 май 18, 13:57    [21440195]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
exp98
Member

Откуда:
Сообщений: 1609
лист 6

К сообщению приложен файл (img_1361-2.zip - 141Kb) cкачать
25 май 18, 13:57    [21440203]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
exp98
Member

Откуда:
Сообщений: 1609
лист 7

К сообщению приложен файл (img_1363-2.zip - 140Kb) cкачать
25 май 18, 13:58    [21440210]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
exp98
Member

Откуда:
Сообщений: 1609
лист 8

К сообщению приложен файл (img_1364-2.zip - 141Kb) cкачать
25 май 18, 13:59    [21440212]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
mayton
Member

Откуда: loopback
Сообщений: 39224
OMG. Дружище. А сканером можно было? Не уверен что распознавалка скушает фотки с рук.
25 май 18, 14:36    [21440442]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
exp98
Member

Откуда:
Сообщений: 1609
mayton, файнридер справился на 20%
А бумага сама по себе тонкая и прозрачная, а краска именно такая бледная.
Ну попробую ещё, похожу по копировльням.
25 май 18, 18:47    [21441501]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
mayton
Member

Откуда: loopback
Сообщений: 39224
Я чувствую что тут тонна ручной работы будет даже после оптического распознавания.
26 май 18, 00:55    [21442061]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
exp98
Member

Откуда:
Сообщений: 1609
Полностью согласен, поэтому и сдался. Для этого нужно очень сильно захотеть. 2-3 тыр я бы
кому-нить дал за выверенный текст, но не больше.
Вот вариант со сканера. Для чтения гораздо лучше, но для ФР не на много.
26 май 18, 15:13    [21442611]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
exp98
Member

Откуда:
Сообщений: 1609
файл не грузится, суббота выходной?

К сообщению приложен файл (002-2.zip - 140Kb) cкачать
26 май 18, 15:17    [21442615]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
exp98
Member

Откуда:
Сообщений: 1609
Вроде теперь выполняю обещание по исходникам для картинок, хотя и без ГСЧ (оказалось, что это была отдельная прога)
Здесь вот обещал:
exp98
К вопросу о приложениях ГЧ.
Ещё давнее вспомнил. модель в целях локации моделировать пересечённую местность вариантом итеративной 2-мерной корелляционной модели с параметрами, на основе ГПСЧ. Там рисовывались всевозможные площадные регионы типа овалов, рукавов, амёб и т.д., каждый регион со своими корелл. характеристиками. Ну и как подзадача было облагородить сишный ГЧ.
Надо сказать, как и в случае с натуральными фракталами, под заданную картинку модель надо было подбирать (читай перебором).
См. вложенный zip-файл.
В нём достаточный комплект исходников, параметров и примера результатов (не показательного), чтобы самому подбирать параметры. Но это не легко (нужно вникнуть в модель), и нужен компилятор С++ безоконного достаточно.
В файле ридми.тхт что смог, написал.

К сообщению приложен файл (darm-m.zip - 24Kb) cкачать
14 янв 19, 21:24    [21785208]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
mayton
Member

Откуда: loopback
Сообщений: 39224
exp98, в какой кодировке у вас исходники?
14 янв 19, 22:14    [21785230]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
exp98
Member

Откуда:
Сообщений: 1609
В винде-1251 все файлы д.б.
Да там всего 3 сишника и 2 пхпшника.

И , ой, забыл define.c
Он на другой машине, завтра-послезавтра, если не подойдёт тот, к-рый я ранее уже загружал.

Но на самом деле ничего красочного, просто обещал ...
14 янв 19, 22:25    [21785235]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
mayton
Member

Откуда: loopback
Сообщений: 39224
Мда. Остался пустяк. Понять как этим пользовался.
14 янв 19, 23:37    [21785292]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
exp98
Member

Откуда:
Сообщений: 1609
Да можно и не пользоваться, а только посмотреть Dz.png, ради этого же поднял. А не нравится, каждый может свои параметры изобрести.

Модель почти типовая: вариант 2-мерной регрессии. Параметры только не типовые, в частности тэта рассчитывается как
t[y][x]= FFF( t[y - 1][x], t[y][x-1] ), по 2-м точкам.
А Dz[][] стандартно взвешенно суммируется по всем предыдущим значениям по Х и отдельно по У.

Короче, инклуд-файл здесь приложен, да и в нём половина лишнего.

К сообщению приложен файл (defines.c - 918bytes) cкачать
15 янв 19, 18:08    [21786029]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
mayton
Member

Откуда: loopback
Сообщений: 39224
Вот этот? И где тут архивация? Сорян вообще непонятно.

К сообщению приложен файл. Размер - 1Kb
17 янв 19, 01:54    [21787404]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
exp98
Member

Откуда:
Сообщений: 1609
exp98
mayton
2) Визуализация.
К вопросу о приложениях ГЧ.

Как уже поясненено, сам ГЧ остался в прошлом (а именно фильтрующая ф-ция для типового датчика, для Eps[]).
17 янв 19, 16:08    [21788085]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
exp98
Member

Откуда:
Сообщений: 1609
А вообще, за тобой иногда замечается заносчивость. Что ж, сейчас наверное это доблесть.
17 янв 19, 16:10    [21788088]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
mayton
Member

Откуда: loopback
Сообщений: 39224
Извини чел. Я вообще ничего не понял. Ты можешь дать краткое описание своей разработки?
Ну типа это - такая-то утилита. На вход идет тото. На выходе - это.
17 янв 19, 16:49    [21788139]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
Siemargl
Member

Откуда: 010100
Сообщений: 6065
exp98
А вообще, за тобой иногда замечается заносчивость. Что ж, сейчас наверное это доблесть.
майтон просто зайчик =)

Если что, я тоже невкурил, проведи ликбез плз

ЗЫ.Хотя я не верю в кибернетическую археологию
17 янв 19, 23:14    [21788356]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
mayton
Member

Откуда: loopback
Сообщений: 39224
Да. Тяжко нам, зайцам.

Я вот опубликую мысль над которой я иногда думаю. Рассеянно.
Раскачиваясь на стуле и глядя в потолок.
Вот если взять черно-белую картинку с факсмильным текстом.

Типа такой (внизу).

И предположим что мы ее хотим оптимально хранить. Разобъем
ее на две половинки по вертикали. И будем рассматривать половинки как 2 независимых картинки.
Слева допустим будет полу-картинка которая будет сжата стандартым факсимильным CCITT Group 4 compression.
Ну неважно чем. Главное что чем-то уже известным. Не суть.

Далее правая половинка - это документ который имеет характеристики сходные с левой.
У них - одинаковый растеризованный шрифт. У них - одинаковая высота строк. И много
похожих статистических характеристик.

Далее я ставлю такую задачу. Я хочу используя сложение по модулю 2 восстановить
правую половинку по информации которая есть в левой. Ну... грубо говоря я ищу
в ней (в левой и правой картинках) фрагменты прямоугольного размера которые совпадают.
И если я нашел - переношу слева направо. Bобщем на псевдо-коде.

image = load("file.ttf")
imageLeft = lefthalf(image)
imageRightOriginal = righthalf(image)

imageRightRecovered = clearImage(image.x / 2,image.y)

while(isDiffer(imageRightOriginal,imageRightRecovered) {
   frame = getFirstDifferFrame(...) // Здесь много эвристики надо думать
   apply(frame, imageRightRecovered) // Здесь не обязательно XOR. Можно рассмотреть AND/OR тоже как операции
   addTo(setOfDifferFrames, frame)
}

save(imageLeft, withCCITTcompression)
save(setOfDifferFrames)
/// Здесь в качестве полезного эффекта я расчитываю получить сет
// изменений в виде некоторого лога действий который в общем
// сериализованном виде будет компактнее чем правый оригинальный image


Далее. Можно попробовать применить рекурсивно этот-же подход к левой картинке разбив еще на две
четвертинки.

Вобщем расчитываю получить некий профит.

P.S. Никакой имплементации пока у меня нет.

К сообщению приложен файл. Размер - 39Kb
18 янв 19, 14:51    [21788795]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
Dima T
Member

Откуда:
Сообщений: 13348
ИМХО может не повторы с одной половины искать на другой, а просто повторы.
Например нашли прямоугольник с буквой O и по всему оставшемуся документу делаем поиск аналогичной катринки.
Затем в конечный файл записываем картинку исходного прямоугольника и координаты всех ее включений.
И т.д. пока не обработаны все места картинки.

Для текстов может и сойдет, и то не факт если это скан.
Даже без повторов может пожаться при большом количестве белого, если в прямоугольники брать только фрагменты с черным.
18 янв 19, 15:33    [21788850]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
mayton
Member

Откуда: loopback
Сообщений: 39224
Ну... я предполагаю что 80% это как раз и будут тексты.
18 янв 19, 15:37    [21788854]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
mayton
Member

Откуда: loopback
Сообщений: 39224
Так. Ту картинку нафик. Она - полутоновая. Вот более правильная.

К сообщению приложен файл. Размер - 40Kb
18 янв 19, 22:36    [21789122]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
Leonid Kudryavtsev
Member

Откуда:
Сообщений: 7438
mayton
Так. Ту картинку нафик. Она - полутоновая. Вот более правильная.

Вы случайно не
https://en.wikipedia.org/wiki/Group_4_compression
пытаетесь по новой изобрести ?

ну или
https://en.wikipedia.org/wiki/JBIG2

+

Ideally, a JBIG2 encoder will segment the input page into regions of text, regions of halftone images, and regions of other data. .... Textual regions are compressed as follows: the foreground pixels in the regions are grouped into symbols. A dictionary of symbols is then created and encoded...
19 янв 19, 21:50    [21789401]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
mayton
Member

Откуда: loopback
Сообщений: 39224
Итак дорогие мои Бабушкины. Я продолжу субботний поток сознания.

Немного цифр.

Оригинальное изображение имеет разрешение 1728x2339. Это главная цифра.

Я сохранил ее в 256 цветное индексное изображение но я был неправ. Цель - архивировать
bi-tonal images поэтому я чуть позже все переделаю. Но не суть. Сейчас это не имеет значения.
Считайте что мы работает только с чёрным и белым цветом без градаций серого.

Под катом - сведенья которые выдает imagemagic.
+
Image: ccitt01.png
  Format: PNG (Portable Network Graphics)
  Mime type: image/png
  Class: PseudoClass
  Geometry: 1728x2339+0+0
  Resolution: 28.35x28.35
  Print size: 60.9524x82.5044
  Units: PixelsPerCentimeter
  Type: Bilevel
  Base type: Grayscale
  Endianess: Undefined
  Colorspace: Gray
  Depth: 8-bit
  Channel depth:
    gray: 1-bit
  Channel statistics:
    Pixels: 4041792
    Gray:
      min: 0 (0)
      max: 255 (1)
      mean: 248.376 (0.974024)
      standard deviation: 40.5613 (0.159064)
      kurtosis: 33.5236
      skewness: -5.96017
      entropy: 0.173792
  Colors: 2
  Histogram:
    104990: (  0,  0,  0) #000000 gray(0)
   3936802: (255,255,255) #FFFFFF gray(255)




Вводная. Термины.

Сжатие-архивирование.
В топике суть одно и тоже.

Raw-size - несжатый объем картинки в байтах. При этом предполагаем что бит 1 и бит 0 в байте определяют
черный и белый цвет соотв.

Для нашей картинки:

1728 x 2339 = 4041792 pixels

В байтах 4041792 / 8 = 505224 = 493 килобайта. Прошу запомнить цифру. Я буду часто на нее ссылаться как
на некий эталон или стартовую точку отсчета. Именно стольно информации хранит наша харнтинка в raw-size.

Спрайт - некий фрагмент картинки (возможно прямоугольной формы) с которым мы работаем. Ищем. Сопоставляем.
И применяем к результату.

Имеющиеся на рынке алгоритмы.

Имеющиеся в наличии сегодня алгоритмы которые архивируют подобные bi-tonal (bi-level) картинки
- CCITT Group 4. Документация пишет что достигает сжатия 20:1

- JBIG2 (Joint Bi-level Experts Group)
Все эти алгоритмы (CCITT, JBIG) очень быстро работают. Некоторые (для факсимильной связи) не видят всю картинку
в целом а обрабатывают только строку независимо от других строк. Это разумно, беря во внимание
возможности железа в 70-80х когда эти алгоритмы только создавались

Чуть позже я соберу цифры как архивируется оригинальная картинка на них всех + еще в различных
конфигурациях параметров алгоритма если таковые будут.

- GIF/PNG - уже известны. Работают хорошо с индексным цветом (2,4,8,16,256 цветов)
но не учитывают особенности bi-tonal. Грубо говоря есть куда расти.

- Архиваторы WinRar/WinZip/Bzip2 .... e.t.c. Работают хорошо применительно к general информации
но также не анализируют пространственные свойства картинок. Хотя на дельта-кодах и на много-цветных (true-color)
картинках WinRar может быть очень эффективен.

Для нашего эксперимента архиваторы не интересны. Хотя могут быть полезны для "дожатия" цифрового потока
который получен например после применения нашего алгоритма который мы создаем.


Цель


Путем длительного анализа картинки с факсимильным текстом найти в нем типовые элементы
(буквы, блоки букв, кернинг) и использовать данные типовые элементы как справочник
при реконструкции оригинального изображения (далее - декомпрессия).

По сути - разработать компрессор.

Компрессия должна нести в себе полезный эффект превышающий пользу от JBIG, CCITT*

compressed-size << compressed-size-JBIG/CCITT << raw-size


Несколько предположений по реализации.

1) Если поставить задачу чуть подольше анализировать картинку то можно поднять больше сведений
о закономерностях которые в нем есть. Ограничений на время нет. Можно анализировать хоть целый день.

2) Если рассмотреть некие атомы из которых состоит данная факсимильная картинка то можно
заметить что это буквы. И всякие символы вокруг букв.

3) Буквы имеют дефекты сканирования. Тоесть одна и та-же буква будет не похожа сама на себя.

4) Разумно рассматривать не целую букву а фрагмент (спрайт? Фрейм?). Есть большая вероятность что ему будет найден
похожий образец.

5) Разумно брать спрайт небольшого размера 3x3, 4x4, 5x5 pix. Слишком большой размер просто сгенерирует
уникальный справочник который по размеру будет эквивалентен raw-size. Слишком мелкий (2х2) годится
но не даст полезного эффекта сжатия т.к. информация по индексу справочника также будет равна самому элементу
по объему занимаемых данных.

6) Разумно сегментировать картинку. Выделить в ней абзацы и строки хотя-бы для облегчения поиска спрайтов.

7) Разумно индексировать картинку. Выделить в ней области которые имеют какие-то признаки для быстрого
поиска.

8) Разумно создавать дополнительные структуры данных (плоскости оригинального изображения) где помечать
уже обработанные пикселы.

9) Разумно рассматривать рекурретное самоподобие восстанавливаемой картинки. Тоесть после того как мы
начали процесс реконструкции у нас кроме справочника могут появлятся новые детали которые также
можно рассматривать как новый справочник.

10) Язык программирования - любой. Ограничений по времени компрессии - нет. Однако желательно чтобы
декомпрессия была по сложности близка к распаковке архива. Как-то так.

Что в топике мы не будем обсуждать.

Сжатие алгоритмами JPEG/JPEG2000/LuraWave и прочие которые вносят
необратимые потери. Сжатие с потерями - отдельная тема и ее можно
обсудить отдельно.

Классические архиваторы. По причинам которые я описал выше.

Всё что здесь написано - безо всяких копирайтов. Вы можете спокойно брать и юзать. Я не против.
20 янв 19, 00:01    [21789461]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
mayton
Member

Откуда: loopback
Сообщений: 39224
Leonid Kudryavtsev
mayton
Так. Ту картинку нафик. Она - полутоновая. Вот более правильная.

Вы случайно не
https://en.wikipedia.org/wiki/Group_4_compression
пытаетесь по новой изобрести ?

ну или
https://en.wikipedia.org/wiki/JBIG2

+

Ideally, a JBIG2 encoder will segment the input page into regions of text, regions of halftone images, and regions of other data. .... Textual regions are compressed as follows: the foreground pixels in the regions are grouped into symbols. A dictionary of symbols is then created and encoded...

Уже ответил походу.
20 янв 19, 00:03    [21789462]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
exp98
Member

Откуда:
Сообщений: 1609
Давненько не брал я в руки факсов. Кажется мне,что такими ровными и белыми могут быть только электронные факсы. В моём прошлом строчки на бумаге гуляли как волны, перемежаясь с площадями серой грязи.
На факсах м.б. логотипы и печати.

Просто находить линии, когда они прямые, легко. Файнридер так делает. В целом - это "преимущественные" направления.

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

Вообще же, если предполагать разброс % черноты в пределах 10 - 90%, универсальный фрактальный метод тоже ж придумали. Там универсальный словарь графических примитивов.
Вспоминая, что некий нулевой вариант фрактального метода, тоже был когда-то в моей археологии, могу быть уверенным, что однотонные площади он закодирует как надо. На степень сжатия будет влиять размер нарезки.
Жпег конечно разрывные функции приближает косинусами, но бесконечным их кол-вом (согласно теории Ф), и сжатие слабое.

А насчёт зайцев щас найду ....
20 янв 19, 00:05    [21789463]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
mayton
Member

Откуда: loopback
Сообщений: 39224
exp98
Просто находить линии, когда они прямые, легко. Файнридер так делает. В целом - это "преимущественные" направления.

+1

Это мысль. Что здесь в помощь? Фурье?

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

Цветные картинки и градации серого я отметаю. Не интересно пока. Не буду заниматься.
Вообще большинство книг эпохи 90х были оцифрованы именно в bi-tonal. Я может
быть хотел свою библиотеку перецифровать. Да мало-ли...

Вспоминая, что некий нулевой вариант фрактального метода, тоже был когда-то в моей археологии, могу быть уверенным, что однотонные площади он закодирует как надо. На степень сжатия будет влиять размер нарезки.

Я вспоминаю что-то в compression.ru или в книжках Ратушняка и Ватолина про фрактальный метод. И где-то даже
был исходник на VisualC++ который сжимал очень ограниченное изображение (квадрат) в grayscale.
Но я-бы хотел подойти к этому методу чуть позже. Хочу вычерпать свои мысли сначала.
20 янв 19, 00:18    [21789472]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
mayton
Member

Откуда: loopback
Сообщений: 39224
exp98
Жпег конечно разрывные функции приближает косинусами, но бесконечным их кол-вом (согласно теории Ф), и сжатие слабое.

К чорту JPEG.
20 янв 19, 00:21    [21789474]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
exp98
Member

Откуда:
Сообщений: 1609
Siemargl
проведи ликбез плз
Для начала согласно правилам: ридми прочтён? там написано немного сумбурно, но перечислены входные параметры и 2 выходных массива (1 для изучения, как бы основной промежуточный параметр, 2-й реально выходной - картинка).
Ну и вообще распаковка входных параметров прозрачнее некуда.
Запись в файл WriteDz() - тоже.
Собственно расчёт формулы - тоже - те 20 строчек после
/*** Вычислить Dz[] методом DARM ***/


Какие ожидания или конкретные вопросы ?

Непараметрическую регрессию всегда нужно понимать как формулу сглаживания с плавающим окном.
Единственно необычного, что стандартно регрессия используется, чтобы найти коэфф-ты уравнения по значениям, минимизирующие невязку, а тут в обратную сторону.
20 янв 19, 00:26    [21789478]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
exp98
Member

Откуда:
Сообщений: 1609
mayton
Фурье?
В топку, это же гармоники, приближающие 2-мерную поверхность, а она кусочно постоянная. И волны ничего не знают про геометрию площадей.
Я же подразумевал преимущественные направления текстовых строк. По сути - это куда и на сколько повернуть рисунок. Методы выдумывать уже не буду, наверняка описаны. Например можно приспособить типа "векторизации" для нахождения строк или пучки прямых (кол-во чёрных точек по направлению для равномерной выборки из файла)
Если не этого хотелось, то ссори.

Но книги сканировать лучше всё же в полутоне - меньше потерь и артефактов.
20 янв 19, 00:41    [21789481]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
mayton
Member

Откуда: loopback
Сообщений: 39224
Полностью согласен насчёт того как правильно сканировать книги.

Но вернёмся к bi-tonal.
20 янв 19, 00:47    [21789483]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
exp98
Member

Откуда:
Сообщений: 1609
В пучках прямых ещё можно дополнительно использовать кластеризацию черноты. Например, если поперёк текста или по кляксе. Характеристики кластеров (размер на прямой, функция распределения по размерам кластера ...)

Ладно,печалька, думал, что в прорубь сегодня, блин ((( термос заварил ....
20 янв 19, 00:48    [21789484]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
mayton
Member

Откуда: loopback
Сообщений: 39224
Почитал вики по Преобразованию Хафа. Интересно. Может пригодится.
20 янв 19, 00:59    [21789488]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
mayton
Member

Откуда: loopback
Сообщений: 39224
Хаф использует выделение границ как промежуточный шаг.

Интересно. Можно ли обойтись без него. Для bi-tone картинки границы между строками букв достаточно четкие.
20 янв 19, 10:42    [21789537]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
mayton
Member

Откуда: loopback
Сообщений: 39224
Чорт. Этот Хаф уводит меня сильно далеко. Кроме того надо ещё и имплементации поискать.
По ссылкам Хабра нашёл под C#.

И ещё вродебы OpenCV поддерживает.

Форкну отдельно. В профильных форумах.
20 янв 19, 16:31    [21789711]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
Leonid Kudryavtsev
Member

Откуда:
Сообщений: 7438
mayton
- GIF/PNG - уже известны. Работают хорошо с индексным цветом (2,4,8,16,256 цветов)
но не учитывают особенности bi-tonal. Грубо говоря есть куда расти.

LZW для bi-tonal вроде не очень подходит. Всю жизнь считал, что bi-tonal значительно лучше сжимается Хаффманом. Был уверен, что TIFF для Bi-tonal именно Хаффман использует, но Wiki пишет про CCITT

Кто ошибается, мой маразм или Wiki - не знаю.

mayton
exp98
Просто находить линии, когда они прямые, легко. Файнридер так делает. В целом - это "преимущественные" направления.

+1

Это мысль. Что здесь в помощь? Фурье?

Плохо разбираюсь в математике, но вроде Фурье апроксимирует ф-ции (!), а bi-tonal назвать не прерывной функцией можно только с большого перепоя. Т.ч. JPEG и Фурье для bi-tonal и вообще любых картинок с резкими границами - зло. AFAIK

mayton
Для bi-tone картинки границы между строками букв достаточно четкие.

Если изобретать свой простой велосипед, то IMHO вполне достаточно XOR'ить соседние строки. Т.к. скорее всего они будут повторяться (вертикальные линии), а горизонтальные линии и Хаффман и LZW хорошо пожмет. В принципе, к велосипеда можно еще приделать квадратные колеса, где в начале каждой обрабатываемой строки или использовать или не использовать "пред обработку" (по аналогии с PNG). Но не думаю, что по качеству сжатия это сильно уйдет от CCIT

А если велосипед не изобретать, то читать про то, как сделал JPEG Independent Group. Работа над JPEG 2000 шла черти сколько времени + в процессе работы отовсюду торчали ушы военных (т.е. бабло). Первые демки по FOI (Future of Interest) в JPEG 2000 вообще были снимки Ирака с пусковыми установками ))), даже уши не прятали ))).

Не думаю, что в форуме можно изобрести нормальные алгоритмы распознавания изображений.

В крайнем случае, можно посмотреть на набор алгоритмов в Open CV. Насколько я помню, там были и алгоритмы для выделения границ, и алгоритмы для поиска FOI, и нейронные алгоритмы поиска похожих (плюс нечувствительные к масштабу и поворотам).

Но мне кажется, это из пушки по воробьям. Даже DjVu настолько не заморачивается (а это коммерческий продукт)
20 янв 19, 16:43    [21789719]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
mayton
Member

Откуда: loopback
Сообщений: 39224
Leonid Kudryavtsev
Плохо разбираюсь в математике, но вроде Фурье апроксимирует ф-ции (!), а bi-tonal назвать не прерывной функцией можно только с большого перепоя. Т.ч. JPEG и Фурье для bi-tonal и вообще любых картинок с резкими границами - зло. AFAIK

Я имел в виду детектирование частот и фаз. Ну да бох с ним. Я уже отказался от Фурье.
Пока что Hough transform - актуален.
20 янв 19, 17:46    [21789752]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
mayton
Member

Откуда: loopback
Сообщений: 39224
exp98
Siemargl
проведи ликбез плз
Для начала согласно правилам: ридми прочтён? там написано немного сумбурно, но перечислены входные параметры и 2 выходных массива (1 для изучения, как бы основной промежуточный параметр, 2-й реально выходной - картинка).
Ну и вообще распаковка входных параметров прозрачнее некуда.
Запись в файл WriteDz() - тоже.
Собственно расчёт формулы - тоже - те 20 строчек после
/*** Вычислить Dz[] методом DARM ***/


Какие ожидания или конкретные вопросы ?

Непараметрическую регрессию всегда нужно понимать как формулу сглаживания с плавающим окном.
Единственно необычного, что стандартно регрессия используется, чтобы найти коэфф-ты уравнения по значениям, минимизирующие невязку, а тут в обратную сторону.

Я с вашего позволения сделаю копи-паст с вашего readme.txt и приаттачу в форум для удобства.

+
Очень кратенько описание в начальном приближении.

Все файлы подразумеваются в одном каталоге.
Darm-m.cpp  - Основная программа, проверялась для C++(11) в режиме debug,
    часть переменных осталась от предыдущих моделей, они не вычищены, т.к.
    файл сделан со старой распечатки, но имевшей версию близкую к окончательной.
    Полезные сочетания параметров модели для хороших картинок надо подбирать.
    Основная идея модели в том, чтобы сформировать корреляционное поле со спец. св-вами.
    Эти св-ва визуально могут выглядеть в виде протяжённых либо компактных регионов,
    к-рые можно интерпретировать на своё усмотрение. 
    Например в данном варианте гистограмма распределения амплитуд яркости показывает 
    два доминирущих кластера по яркости (но не по площади). 
    Можно, к примеру, сказать, что это перепады высот. (А можно и, 
    что это группировки в соцсети вокруг агентов влияния 2-х разных идей...)
    Точно помню, что при неких простых параметрах вида констант 0/1 получилось 
    похоже на треуг-к Серпин-го.
    
defines.c  - включаемый файл, содержит универсальные макросы
cfg-m.cfg   - параметры модели в текстовом виде, нужно wN1=iP ...


Dz[][]  - 2-мерное поле точек, основная цель программы, на выходе файлы Dz.flt и Dz.json
Teta[][] - 2-мерное поле промежуточного параметра модели, сохраняется в teta.flt
eps.flt  - входной массив вероятностей (epsilon), должен иметь распределение спец. свойства,
      но свойства надо знать.
doEps.cpp  - можно создавать свой файл eps.flt, затем
      Eps[] будет использоваться для создания pi[0-3] с нужными характеристиками,
      в то время как pi[4-5] формируются случайным образом. 

  
Кстати переменные созвучны греческим буквам:
dzeta[][]  - значения числового поля, вычисляется по модели регрессионного типа
epsilon[]  - [0; 1], задано в файле
teta[][]  - {0; 1}, вычисляется рекуррентно, записывается в файл для промежуточного контроля
PVer[]  - [0; 1], заданы вероятностями, желательно чтобы и больше, и меньше 1/2,
          имеет смысл порогов сравнения.
pi[0-3] и pi[4-5] - {0; 1}, (не путать с числом 3,141593...), вычисляется,
          имеют 2 разных происхождения и использования
"Мю"   - ~0.5, вычисляется, имеет смысл матожидания в модели регрессии
Ro[], Lambda[] - [-1; 1], вычисляется
A[], B[]  - вычисляется
C[]  - [-1; 1], вычисляется


Если неохота писать рисовалку данных для изучения полученных корреляционных св-в.
пакет PHP версии от 5.2
запускать (зашито, что из каталога c:/tmp/4php/)
php.exe ind3.php Dz.png 30 33
где 30х33 - пример размеров графического полотна в пикселах

ind3.php  - рисует в png-файле (например в Dz.png) то, что читает из Dz.json 
dataDZ.inc  - включаемый файл
Dz.json  - встроенный входной файл для рисовалки, он же выходной для модели ( из Darm-m)
Dz.png - имя, к-рое задавать в командной строке
---------------------------------
20 янв 19, 17:52    [21789753]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
mayton
Member

Откуда: loopback
Сообщений: 39224
Leonid Kudryavtsev
LZW для bi-tonal вроде не очень подходит. Всю жизнь считал, что bi-tonal значительно лучше сжимается Хаффманом. Был уверен, что TIFF для Bi-tonal именно Хаффман использует, но Wiki пишет про CCITT

Кто ошибается, мой маразм или Wiki - не знаю.

Не уверен. LZW обычно подходит для текстовых данных где есть ярко выраженные слоги.

Для сжатия черно-белых строк в классическом варианте используются кодирование Хаффмена.
Различные вариации CCITT Group 3/4. Строка изображения при этом представлена как последовательность
длинн черно-белых отрезков. Где черный и белый - строго четные и нечетные или наоборот.
20 янв 19, 18:00    [21789759]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
mayton
Member

Откуда: loopback
Сообщений: 39224
Leonid Kudryavtsev
Если изобретать свой простой велосипед, то IMHO вполне достаточно XOR'ить соседние строки. Т.к. скорее всего они будут повторяться (вертикальные линии), а горизонтальные линии и Хаффман и LZW хорошо пожмет. В принципе, к велосипеда можно еще приделать квадратные колеса, где в начале каждой обрабатываемой строки или использовать или не использовать "пред обработку" (по аналогии с PNG). Но не думаю, что по качеству сжатия это сильно уйдет от CCIT

Эксперимент с XOR (вправо) я уже проводил где-то в sql.ru. Не могу найти правда.
У него полезный эффект - почти тот-же что и кодирование чет-нечет отрезков черного и белого.
Я-бы даже сказал что это одно и то-же. Для детектирование переходов мы можем xor-ить
соседей явно или в алгориме подразумевать это.

Добавление вертикального XOR к строкам не даёт полезного эффекта. Ну ... по крайней мере
для тех данных на которых я тестировал.

Хотя XOR может быть полезен как фильтр границ. Ну об этом чуть позже я еще напишу.
20 янв 19, 18:08    [21789763]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
mayton
Member

Откуда: loopback
Сообщений: 39224
Leonid Kudryavtsev
Не думаю, что в форуме можно изобрести нормальные алгоритмы распознавания изображений.

Я не претендую. В конце концов это чортовы игры разума. Как ферзи на доске.
20 янв 19, 18:10    [21789765]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
mayton
Member

Откуда: loopback
Сообщений: 39224
Я читал про J2k. КМК главный полезный по настоящему эффект - это другая информационная ценность
потока. Она основана на том что низкие частоты картинки перенесены в заголовок. Это позволяет
видеть в принципе картинку "не в фокусе" даже если она прогрузилась только на 10-20%. И это
не какой-то дурацкий progressive load а настоящий step-by-step способ детализации.

Но там не Фурье а другие функции в основе. Вроде как импульсы.

Но в моём эксперименте с факсом - Lossy JPeg2000 мне не подходит.
20 янв 19, 18:14    [21789767]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
mayton
Member

Откуда: loopback
Сообщений: 39224
Leonid Kudryavtsev
Но мне кажется, это из пушки по воробьям. Даже DjVu настолько не заморачивается (а это коммерческий продукт)

Я читал книжки в DJVu. Мне понравилось что он тоже наносит повреждения для скан-документов.
Местами это распознанный OCR-текст. Местами - картинка там где формула или хитрый символ.

Вобщем DJVu я тоже отношу к способам сжатия которые наносят непоправимый damage.

Если этот damage управляемый и можно его как-то регулировать или отключить - то пожалуйста
покажите где это описано. Пока впечатление у меня от этого типа документа очень прискорбное.
20 янв 19, 18:17    [21789768]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
mayton
Member

Откуда: loopback
Сообщений: 39224
Leonid Kudryavtsev
В крайнем случае, можно посмотреть на набор алгоритмов в Open CV. Насколько я помню, там были и алгоритмы для выделения границ, и алгоритмы для поиска FOI, и нейронные алгоритмы поиска похожих (плюс нечувствительные к масштабу и поворотам).

Наслышан про Open CV. Мощная штука. Но я пока попробую не завязываться на нее.

Хаф-трансформ у меня вызывает вопросы но в целом он не выглядит нерешаемым.

В противоположность "Непараметрическую регрессию" и "Корреляционное поле" которую
предложил наш коллега я не могу ни к чему применить. У меня наверное не хватает знаний
по данной предментной области.
20 янв 19, 18:21    [21789772]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
mayton
Member

Откуда: loopback
Сообщений: 39224
mayton
Хаф использует выделение границ как промежуточный шаг.

Интересно. Можно ли обойтись без него. Для bi-tone картинки границы между строками букв достаточно четкие.

Хм... сам спросил. Сам ответил.

Если взять изображенеи шахматной доски с линейным искажением (снято под углом) то
Hough_transform можеть дать сбой. Тоесть детектировать края. Но центр доски и клетки
могут скомпенсировать друг друга.
20 янв 19, 21:46    [21789847]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
exp98
Member

Откуда:
Сообщений: 1609
Вопрос в чём? На предыдущей же странице, можно сказать, всё расписано.
Могу выразить своё к этому отношение.
Послед-сть повторяющихся 0 и 1 - это вроде в основе своей RLE (run lehgth ... ).
Крупноразмерные графические паттерны в словаре - да, путь к сильному сжатию. Но чем они крупнее, тем больше их надо придумать.
С другой стороны, фрактальный метод "quad tree" как раз иерархически разбивает блок на мелкие части, в результате чего паттерны формируются самостоятельно. Это сжатие да, с потерей, однако чёткость восстановления увеличивается по мере итераций восстановления (но есть предел качества).

Статистика триграмм, квадрограмм и т.д., ну да, "слоги", LZW.

Вейвлеты да,не гармоники, однако плоскую функцию можно хорошо приблизить лишь огромным кол-вом кругленьких функций, в рез-те чего сжатие падает, либо качество. Что и наблюдается в виде ореолов на контурах. В качестве ухищрения можно сделать вид, что картинка дана в интенсивностях 0 и 1 вместо 0 и 255. И тогда это не вертикальный перепад,а линия под 45 град. Но всё остальнное - это всё равно прямая, а не кривая.

Если рассмотреть только пр-во кусочно-постоянных функций всюду с одним константным перепадом (что и предлагается в виде ч/б картинки), то можно попытаться построить базис из кусочно-постоянных. Получим векторное постранство функций,в к-ром любой факс представлется в виде линейной комбинации базисных векторов. Получим аналог вейвлетов, но без ореолов и недостатков на контурах. Я так думаю. Конечно, по амплитуде не смогеть квантовать, но по "частоте", возможно, что запросто.
Надо только соблюсти нек-рые условия (ортонормировность, коэффициенты=скалярному произведению и т.д.), чтобы ряд разложения мог называться рядом Ф, и по нему разлагать. Правда коэфф-ты будут вещественными числами. Что-то подобное шевелится в памяти, но надо искать.
20 янв 19, 23:46    [21789888]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
mayton
Member

Откуда: loopback
Сообщений: 39224
Закину несколько видео по Хафу

+


+

21 янв 19, 00:21    [21789899]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
exp98
Member

Откуда:
Сообщений: 1609
Пораскинув остатками мозгов, прихожу к промежуточному мнению, что делать ставку надо на:
CCTTiiiii или как его там
+ лежащие где-то в инете методы ориентации текста и периодичности текстовых строк, к примеру из файнридера. Писать распознавалки - желание закончилось лет 20 назад.

Тем не менее.
1) По базису как всегда опередили: ортонормированный базис кусочно-постоянных функций Хаара на отрезке.
Предварительно склоняюсь, что сжатие им будет поменьше жипега. Кроме того, сходимость ряда Ф тоже медленнее.
Выигрышная сторона в том, что спектр будет ограничен, для задачи нужно только 2 значения. Квантование по "частоте" (здесь это номер канала) скорее всего приведёт (если сжимать построчно одномерными ф-циями Хаара) к утолщению букв, однако неравномерно от строки к строке.
Ситуацию со сжатием может улучшить 2-мерное преобразование, но надо построить плоский аналог таких ф-ций (впрочем это не кажется невыполнимым).

2) см. далее
22 янв 19, 16:06    [21791315]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
exp98
Member

Откуда:
Сообщений: 1609
По поводу выделения текстовых строк. Велосипед, да, но вдруг кого наведёт.

Пропускаю этап выбора начальной точки на рисунке.
Пусть рисунок центрирован, хотя текст и по диагонали, в нём только текст, и точка эта - центр (или центр графитных масс), а фон чиста белый с эпизодическими точечными вкраплениями.

а) Через точку провести горизонталь и вертикаль.
б) Наскоком с горизонталями ещё не всё ясно. Предположим, что всё же угол поворота меньше 45 гр.
Например считаем коэф-т корреляции её со строкой (11111...)
Есть предположение, что для печатных букв (не рукописных!!!) коэф-т в среднем достигает максимума либо вдоль строки (даже для курсива), либо поперёк.

в) Используем свойства авторегрессионной функциии, чтобы найти усреднённую высоту строк.
Пусть уже нашли направление строк. Если неправильно нашли, то вертикаль хоть и косо, но срезает много строк.
В любом случае, ожидаем, что вектор пересечения (0011001011...) почти периодичен. Предполагаю, что квазипериодичность обеспечат просветы между строками почти одинаковой длины.
Находим этот квазипериод.
По теории в чистых случаях это будет номер отсчёта первого максимума.
Детали процесса (в) иллюстрирует вложенная эксэлка с формулами и графиком.
Для простоты я размножил 20-битовый столб много раз. Теория ожидает индикацию чистого периода. Пример подтверждает, период=20.

Все опыты легко проводить в эксэле, без программирования.

К сообщению приложен файл (Книга2.zip - 86Kb) cкачать
22 янв 19, 16:52    [21791361]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
mayton
Member

Откуда: loopback
Сообщений: 39224
exp98
Пораскинув остатками мозгов, прихожу к промежуточному мнению, что делать ставку надо на:
CCTTiiiii или как его там
+ лежащие где-то в инете методы ориентации текста и периодичности текстовых строк, к примеру из файнридера. Писать распознавалки - желание закончилось лет 20 назад.

Мы думаем одинаково. У меня была мысль - распознавать текст. И потом добивать разницу между орининалом
и синтезированным рисунком через булев операции. По сути - добавить "недостающий шум". И тогда основная
сложность будет на сжатии шума.

1) По базису как всегда опередили: ортонормированный базис кусочно-постоянных функций Хаара на отрезке.
Предварительно склоняюсь, что сжатие им будет поменьше жипега. Кроме того, сходимость ряда Ф тоже медленнее.
Выигрышная сторона в том, что спектр будет ограничен, для задачи нужно только 2 значения. Квантование по "частоте" (здесь это номер канала) скорее всего приведёт (если сжимать построчно одномерными ф-циями Хаара) к утолщению букв, однако неравномерно от строки к строке.
Ситуацию со сжатием может улучшить 2-мерное преобразование, но надо построить плоский аналог таких ф-ций (впрочем это не кажется невыполнимым).

Начал читать про Хоара. Пока неясно. Преимещества Фурье очевидны на гладких кривых и низких частотах.
У нас нет ни того ни другого. Кроме того классический JPEG это функция с ручкой-регулятором. Сколько пользователь
накрутит - столько и будет сжатие. Хоть 100 раз. Понятие дефолтного профиля практически не существует. Все программы
делающие jpeg по дефолту - делают его пр разному.

Ессьб поэтому сомнения.
22 янв 19, 19:32    [21791512]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
kealon(Ruslan)
Member

Откуда: Нижневартовск
Сообщений: 4242
mayton,

Burrows–Wheeler transform как-то забыли

по идее оно то как раз одинкаково напечатанные буквы должно хорошо ловить
22 янв 19, 20:31    [21791549]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
exp98
Member

Откуда:
Сообщений: 1609
kealon(Ruslan)
по идее оно то как раз одинаково напечатанные буквы должно хорошо ловить
Мой ограниченный инглиш при беглом просмотре говорит, что это чуть лучше, чем просто построчный RLE, так?
автор
Хоара. Пока неясно. Преимещества Фурье очевидны на гладких кривых и низких частотах
- Хоар ?= Хаар;
- тоже неясно, плоские пов-сти надо приближать плоскими же, а не гладкими - идея была в этом. Но первые непроверенные манипуляции в эксэле привели как раз к размытию "1", сжатие слабенькое,но это на послед-сти двойного периода и "дискретизации" 1/64;
- здесь всё тоже обощённое разложение Ф, но по системе кусочно-постоянных функций, что как раз и приминительно к ч/б картинкам. Отображение в спектр взаимнооднозначно. Я же не предлагаю полиномы Маллера, я их не знаю))
- здесь как раз важны "Высокие частоты".
- Пугает необходимость делние на 2**m.
22 янв 19, 22:18    [21791616]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
kealon(Ruslan)
Member

Откуда: Нижневартовск
Сообщений: 4242
exp98
Мой ограниченный инглиш при беглом просмотре говорит, что это чуть лучше, чем просто построчный RLE, так?
нет
это предварительный метод, он как раз создаёт очень много повторяющихся "сиволов", а выход с него уже дальше подают например Хаффману

в вики есть русский вариант
23 янв 19, 00:18    [21791677]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
exp98
Member

Откуда:
Сообщений: 1609
Всё же почти дожал пробный вариант. Цвет восстанавливется однозначно.

Выборка 32 точки, базис функций 31 штука, ak - вычисленные к-ты разложения (амплитуды), Inp(t) - битовая строка, Outp(t) - восстановленная по к-там
+
t	Inp(t)	Outp(t)	Round( ak, 3)
0	0	-0,002	0,661
1	1	1,510	-0,067
2	1	1,510	-0,067
3	0	-0,002	0,094
4	0	0,001	0
5	0	0,001	0,094
6	1	1,513	0
7	0	-0,001	0
8	0	-0,002	-0,134
9	1	1,512	0
10	1	1,512	0
11	0	-0,002	-0,267
12	0	-0,002	-0,134
13	1	1,512	-0,267
14	1	1,512	-0,267
15	0	-0,002	-0,189
16	0	-0,001	0,189
17	0	-0,001	0
18	1	1,509	0,189
19	1	1,509	-0,189
20	0	0,001	0,189
21	0	0,001	-0,189
22	0	-0,001	0,189
23	1	1,513	0
24	0	0	0
25	0	0	0
26	1	1,511	-0,189
27	1	1,511	0
28	0	0	0
29	0	0	0
30	1	1,511	0
31	1	1,511
Вместо ak записываем старшиие 8 разрядов мантиссы, затем сжимаем Хафманом.
При желании можно предварительно квантовать ak (аналогично жпегу).
Можно полностью отбросить a0.
23 янв 19, 00:23    [21791679]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
mayton
Member

Откуда: loopback
Сообщений: 39224
kealon(Ruslan)
mayton,

Burrows–Wheeler transform как-то забыли

по идее оно то как раз одинкаково напечатанные буквы должно хорошо ловить

Я не знаю как применить BWT к графике.
23 янв 19, 01:11    [21791689]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
mayton
Member

Откуда: loopback
Сообщений: 39224
exp98
По поводу выделения текстовых строк. Велосипед, да, но вдруг кого наведёт.

Этот метод надо сравнить с Хафом. Хаф вобщем-то не дает ответа на вопрос "под каким углом лежит текст
скан-документа". Он дает двумерную поверхность где есть множество локальных максимумов
которые (потенциально) как стрелка компаса указывают на возможное направление.

Если ваш метод-велосипед даст ответ на вопрос о двух локальных максимуммах (вертикаль и горизональ
текста) то это конечно good.

По wiki если идти по ссылкам от Хафа то можно подойти к преобразованию Радона. Которое
как пишут предпочтительнее для зашумленных картинок. По Радону я нифина не понял пока.
Много математики.
23 янв 19, 01:32    [21791691]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
mayton
Member

Откуда: loopback
Сообщений: 39224
А теперь подкину цифры как обещал

FormatAlgorithmSize (pixels) Colors Size bytes
PNG ? 1728 x 2339 256 (Gray) 41.4KB
TIFF CCITT(Group4) 1728 x 2339 2 16.9KB
BMP No compress 1728 x 2339 2 505KB
BMP.zip Zip(-9) 1728 x 2339 2 26 Kb
GIF LZW? 1728 x 2339 2 38.9KB


Вот 16 килобайт это рекорд. Надо его побить. Такая вот сверх-задача.

Какой алгоритм используется в GIF я не помню. Возможно LZW. Надо проверять.

По приколу BMP я сжал Zip-ом с опцией (-9) best compression. Для сравнения с другими.

Скриптик как я их получил. И результат. Оригинал изображения - приаттачен был ранее. Оригинал - в формате PNG
в градациях серого 8-bit но из них используются 2 цвета.
+
file ccitt01.png
ccitt01.png: PNG image data, 1728 x 2339, 8-bit grayscale, non-interlaced
identify ccitt01.png
ccitt01.png PNG 1728x2339 1728x2339+0+0 8-bit sRGB 256c 41.4KB 0.000u 0:00.000

convert -threshold 50 -colors 2 -compress group4 ccitt01.png ccitt01-group4.tif
file ccitt01-group4.tif
ccitt01-group4.tif: TIFF image data, little-endian, direntries=18, height=2339, bps=1, compression=bi-level group 4, PhotometricIntepretation=WhiteIsZero, orientation=upper-left, width=1728
identify ccitt01-group4.tif
ccitt01-group4.tif TIFF 1728x2339 1728x2339+0+0 1-bit Bilevel Gray 16.9KB 0.000u 0:00.000

convert -threshold 50 -colors 2 ccitt01.png ccitt01.bmp
file ccitt01.bmp
ccitt01.bmp: PC bitmap, Windows 98/2000 and newer format, 1728 x 2339 x 1
identify ccitt01.bmp
ccitt01.bmp BMP 1728x2339 1728x2339+0+0 1-bit sRGB 2c 505KB 0.020u 0:00.019

convert -threshold 50 -colors 2 ccitt01.png ccitt01.gif
file ccitt01.gif
ccitt01.gif: GIF image data, version 89a, 1728 x 2339
identify ccitt01.gif
ccitt01.gif GIF 1728x2339 1728x2339+0+0 8-bit sRGB 2c 38.9KB 0.000u 0:00.000


Все прочие форматы получены конвертером с преобразованием в 2 цвета и трешолдом в 50% относительно белого.
23 янв 19, 02:17    [21791698]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
mayton
Member

Откуда: loopback
Сообщений: 39224
Алгоритм JBIG чуть позже добавлю. Пока не нашел коробочный вариант установки. Чето-надо качать из левых репок.
23 янв 19, 02:22    [21791699]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
mayton
Member

Откуда: loopback
Сообщений: 39224
Вобщем скачал я какой-то дурацкий JBIG-KIT. Собрал. Он в качестве входных данных
хавает псевдотекстовые картинки как мы делали в Card-Raytracer. Еще геморр. Ладно
пошел спать. Пока.
23 янв 19, 02:30    [21791700]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
exp98
Member

Откуда:
Сообщений: 1609
mayton
Если ваш метод-велосипед даст ответ на вопрос о двух локальных максимуммах (вертикаль и горизональ текста)
Ха, если найти верную вертикаль, то горизонталь ей перпендик-на. Лишь бы не попутать гор. с верт-лью.
Для прямых Хафа лучше. Вспомнил, читал кажется на хабре. Если не ошибаюсь, для прямых можно построить радар 360 град, а по углу получить диаграмму рассеяния показателя. Где максимумы, там и прямые. Вроде так?
Похожее я и подразумевал. Надо только искать в пучках параллельных направлений, т.к. в одно можно и не попасть.
23 янв 19, 13:33    [21792060]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
mayton
Member

Откуда: loopback
Сообщений: 39224
exp98
mayton
Если ваш метод-велосипед даст ответ на вопрос о двух локальных максимуммах (вертикаль и горизональ текста)
Ха, если найти верную вертикаль, то горизонталь ей перпендик-на. Лишь бы не попутать гор. с верт-лью.

Вовсе не факт. Документ может содержать посторонние линии.

Тоесть может быть 3 экстремума на фазовой плоскости Хафа. И только 2 из них - под углом 90. А третья - может
быть просто жирной диагональной линией. Элементом чертежа и прочее.
23 янв 19, 13:37    [21792067]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
mayton
Member

Откуда: loopback
Сообщений: 39224
По поводу корреляций и ковариаций двух векторов. (Или двух матриц битов).

Для черно-белых точек эта формула должа выродится в банальный подсчет равенства пикселов
источника и получателя.

Ну... я на это надеюсь.
23 янв 19, 13:39    [21792070]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
Leonid Kudryavtsev
Member

Откуда:
Сообщений: 7438
mayton
Вобщем скачал я какой-то дурацкий JBIG-KIT. Собрал. Он в качестве входных данных
хавает псевдотекстовые картинки как мы делали в Card-Raytracer. Еще геморр. Ладно
пошел спать. Пока.

По I-net'у Image Magick поддерживает JBIG. И аж две штуки JBIG1 и JBIG2 )))

Не скачивал, не смотрел, но вроде Image Magick раньше был достаточно "серьезным" (не глюкавым) продуктом.
23 янв 19, 14:05    [21792111]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
mayton
Member

Откуда: loopback
Сообщений: 39224
О. Спрасибо. Я и не заметил.
23 янв 19, 14:43    [21792212]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
Leonid Kudryavtsev
Member

Откуда:
Сообщений: 7438
Да, порнография какая-то с Jbig2
в виде отдельного формата почти никем по нормально не поддерживается, только внутри PDF

В общем, B&W картинка - якобы 12 794 байт, но ничем не открыть )))
внутри PDF (картинка плюс заголовок PDF) - 14 725 байт
PDF генерил http://www.stdutility.com/stduconverter.html
23 янв 19, 14:46    [21792220]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
Leonid Kudryavtsev
Member

Откуда:
Сообщений: 7438
Прикладываю получившуюся PDF'ку. Хром показывает нормально )))

К сообщению приложен файл (ccitt01.pdf - 14Kb) cкачать
23 янв 19, 14:47    [21792222]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
mayton
Member

Откуда: loopback
Сообщений: 39224
Обидно что браузеры не поддержали JBIG как медиаформат картинок.
23 янв 19, 14:50    [21792232]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
Leonid Kudryavtsev
Member

Откуда:
Сообщений: 7438
Leonid Kudryavtsev
внутри PDF (картинка плюс заголовок PDF) - 14 725 байт
PDF генерил http://www.stdutility.com/stduconverter.html

удалил все заголовки до stream и после endstream
в общем, собственно картинка не больше 13 048 байт и около 1 680 байт собственно заголовки/окончания PDF

по сравнению c 16.9KB Kb CCI&T
13 / 17 * 100 = 76 %
экономия одной 1/4 размера конечно значима, но возможные потери качества и мучения на мой взгляд не оправдываются ))) особенно при современных размерах HDD/SSD
23 янв 19, 14:59    [21792262]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
mayton
Member

Откуда: loopback
Сообщений: 39224
Дело принципа. Но если мы нарисуем график типа по оси X - время или мегафлопы.
А по оси Y - сжатие то на этой кривой мы очень-очень быстро обнаружим точку
которая нам будет интересна.

И если там будет время в 1000 раз дольше а сжатие +0.1% то нафик нафик.
23 янв 19, 15:02    [21792266]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
mayton
Member

Откуда: loopback
Сообщений: 39224
Обновил

FormatAlgorithmSize (pixels) Colors Size bytes
PNG ? 1728 x 2339 256 (Gray) 41.4KB
TIFF CCITT(Group4) 1728 x 2339 2 16.9KB
BMP No compress 1728 x 2339 2 505KB
BMP.zip Zip(-9) 1728 x 2339 2 26 Kb
GIF LZW? 1728 x 2339 2 38.9KB
JBIG2 ? 1728 x 2339 2 12.7Kb
23 янв 19, 15:33    [21792322]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
exp98
Member

Откуда:
Сообщений: 1609
mayton
По поводу корреляций
Для черно-белых точек эта формула должа выродится в банальный подсчет равенства пикселов
источника и получателя.
По правде гря, не понял, скажу, что сам подразумевал.
В самом общем случае подсчёт не проходит, формула корреляции работает согласно формуле.
Кратко это объясняют: степень линейной предсказуемости одного вектора по другому.
Важность имеют именно согласованная последовательность взлётов и падений.
Можо заметить, что коррел-я похожа на формулу скалярного произв-я и на ф. косинуса угла. Формулы коррелируют. А что такое скалярное проходили примерно в 6-8 классе: степень параллельности. Если Вы предсказываете падения долара каждую 2-ю неделю и рост каждую другую неделю, а он прыгает ровно наоборот, то угол 90 град.)) косинус=0.

Вот если считать corr( V, 1), тогда чем больше 1 в V, и чем длиннее их серии, тем она больше.

А насчёт вертикалей я имел ввиду именно правильную вертикаль, ищущуюся НЕ Хафом.
23 янв 19, 22:21    [21792694]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
exp98
Member

Откуда:
Сообщений: 1609
mayton
По Радону я нифина не понял пока.
В нашей Мат. энциклопедии т.4(в той, у к-рой т.5 за 1985г.) есть Радона преобр-ние. Из него понятно, что Хаф хафнул себе немножко Радона и этим ограничился. Тем не менее предварительно почитав Хафа на примере рентгено-томографии, на примере сечения лучём некоторого множества, проще понять, что собственно означает формула Радона. Не только 1-мерную прямую, но и 2d плоскость,3d ... Nd. Для кривых (дуги на книжном развороте) ребуется задать кривые в параметрическом виде. А для прямых сойдёт и Хаф.
24 янв 19, 19:29    [21793766]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
exp98
Member

Откуда:
Сообщений: 1609
О базисной системе Хаара.

Здесь результаты для 64-выборки (в предыдущем варианте 32 пропала 2-я гармоника,но она и не используется), и кажется, где-то у меня систематическая погрешность. Готовые реализации не искал, определение взял из нашей Мат. энциклопедии, т.5 с.474, 1985, "Хаара система", а дальше немного линейной алгебры в векторном постранстве. Если бы надо было восстановить фактическую интенсивность цвета, то я бы свои вычисленные Ak поделил на корень из 2.
Но в задаче амплитуды известны: 1/0. По этой же причине коэф-т A0 запоминать не нужно, он имеет смысл матожидания в восстановленной последов-сти. На рисунке это наглядно: 2 цветовых кластера, они всегда не пересекаются.

коэф-ты разложения округлены до 1 знака, Round( ak, 1)
В этом случае их становится только 6 различных вместо 12 либо 13.

Для оптимистичных ухищрений можно следовать за жипегом:
перевод амплитуд из флоат в целые с понижением битности
квантование амплитуд
Хафман или др.
входной вектор не строка рисунка, а квадрат размером 1-2 текстовые строки, размер к-рых определяем предварительно. Далее можно пытаться сегментировать текст, чтобы выделять 1-4 символа прямоуг-ком ...

Я думаю, что прямоугольник носит тот же смысл, что и в жпеге, повысить коррелированность соседних точек в выборке. Только перенумировка не зиг-загом, а по сходящейся спирали, ибо у нас в квадрате как бы буквы, а не полутона.
Блочность и разводы отсутствуют.

Степень сжатия не то чтобы регулируется ( Round( ak, 1/2/3), квантование ak), скорее нужна наибольшая. Квантование "частот" пока неясно, вряд ли полезно, приведёт к размытию/сжатию букв.

Я интерпретирую цвет чёрный=1, но ведь для баловства это не важно? а м.б даже лучше для сжатия,т.к. ak=0 сейчас означает, что сигмоида/хаарлетка не участвует, а белых точек большинство.

На этом по базису Хаара у меня всё, дальше нужно смотреть уже на реальной картинке. Нужна ли экселка для опытов? там только формулы, без макросов. Удлинить выборку достаточно легко ...

частотная таблица коэф-тов разложения
Ak	Count(Ak)
0	33
0,1	12
-0,1	12
0,2	3
-0,2	3
0,7	1
отсчёты вход выход к-ты
+
t=	F(t)=	FF(t)	Round( ak, 1)
0	0	0,417	0,7
1	1	1,549	0
2	1	1,549	0
3	0	0,417	0
4	0	0,017	0
5	0	0,017	0
6	1	1,383	0
7	0	0,251	0
8	0	0,134	0,1
9	1	1,266	0
10	1	1,266	0,1
11	0	0,134	0
12	0	0,134	0
13	1	1,266	-0,1
14	1	1,266	0
15	0	0,134	-0,1
16	0	0,183	0
17	0	0,183	-0,1
18	1	1,783	0
19	1	1,783	0
20	0	0,017	-0,2
21	0	0,017	-0,1
22	0	0,251	-0,2
23	1	1,383	-0,2
24	0	-0,1	0,2
25	0	-0,1	0,2
26	1	1,5	0,1
27	1	1,5	0,2
28	0	-0,1	0
29	0	-0,1	0
30	1	1,5	0,1
31	1	1,5	0
32	1	1,5	-0,1
33	1	1,5	0,1
34	0	-0,1	0
35	0	-0,1	0,1
36	1	1,5	-0,1
37	1	1,5	0,1
38	0	-0,1	-0,1
39	0	-0,1	0,1
40	1	1,383	0
41	0	0,251	0
42	0	0,017	0
43	0	0,017	-0,1
44	1	1,783	0
45	1	1,783	0
46	0	0,183	0
47	0	0,183	0
48	0	0,134	0
49	1	1,266	0
50	1	1,266	0
51	0	0,134	0
52	0	0,134	0,1
53	1	1,266	0
54	1	1,266	0
55	0	0,134	0
56	0	0,251	-0,1
57	1	1,383	0,1
58	0	0,017	-0,1
59	0	0,017	0,1
60	0	0,417	-0,1
61	1	1,549	0
62	1	1,549	-0,1
63	0	0,417	0,1
----------------------------

К сообщению приложен файл. Размер - 12Kb
24 янв 19, 19:39    [21793767]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
mayton
Member

Откуда: loopback
Сообщений: 39224
Добавил в скриптик поддержку JBIG2. К сожалению я не знаю в каком расширении должен
формироваться файл. Возможно это подмножество tiff но шапка файла не соответствует. У тифф - другая сигнатура.

Линуксовая утилита file не смогла инентифицировать содержимое.
convert -threshold 50 -colors 2 -compress jbig2 ccitt01.png ccitt01.jbig
hexdump -C -n 32 ccitt01.jbig
00000000  00 01 01 00 00 00 06 c0  00 00 09 23 00 00 00 21  |...........#...!|
00000010  08 00 03 1c 1a ae 1e 3d  c9 51 01 8f 7d 4f 2f 59  |.......=.Q..}O/Y|
00000020
file ccitt01.jbig
ccitt01.jbig: data
identify ccitt01.jbig
ccitt01.jbig JBIG 1728x2339 1728x2339+0+0 8-bit sRGB 2c 13.9KB 0.040u 0:00.040
26 янв 19, 19:00    [21794895]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
mayton
Member

Откуда: loopback
Сообщений: 39224
Интересно почему identify пишет что цвет - восьмибитный. Может это просто некое обобщение? Я везде заказывал
конверсию в 2 цвета.
26 янв 19, 19:01    [21794896]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
mayton
Member

Откуда: loopback
Сообщений: 39224
exp98
О базисной системе Хаара.

Здесь результаты для 64-выборки (в предыдущем варианте 32 пропала 2-я гармоника,но она и не используется), и кажется, где-то у меня систематическая погрешность. Готовые реализации не искал, определение взял из нашей Мат. энциклопедии, т.5 с.474, 1985, "Хаара система", а дальше немного линейной алгебры в векторном постранстве. Если бы надо было восстановить фактическую интенсивность цвета, то я бы свои вычисленные Ak поделил на корень из 2.
Но в задаче амплитуды известны: 1/0. По этой же причине коэф-т A0 запоминать не нужно, он имеет смысл матожидания в восстановленной последов-сти. На рисунке это наглядно: 2 цветовых кластера, они всегда не пересекаются.

Дружище exp. Напомни плиз откуда ты брал первые два столбика в Excel-файле?

Про Хаар нечитал. Возможно это аналог фурье где вместо синуса - меандр?
26 янв 19, 19:04    [21794897]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
mayton
Member

Откуда: loopback
Сообщений: 39224
По поводу моего метода. В голове - уже целый Mind-map направлений куда можно двигаться.
Пока я думаю о том как Фурье или Хаар помогут детектирвать параграф и границы строк и букв.

В данном конкретном случае я пошёл на хитрость. Специально нашел моноширный шрифт но такое
счастье будет не всегда. Большинство современных шрифтов вообще не моноширные.

Далее по результату разбиения параграфа на некоторые строительные блоки (sprites, frames, JPEG-MCU)
я хотел к каждому из них применить еще одно разбиение и анализ.

Вот как на картинке. При этом само по себе разбиение на красных линиях может быть пиксельно не-точным.
Грубо говоря нет гарантии что высота блока будет одинаковой. Вот такие вот условия. Блоки - это просто
хинт. Или подсказка алгоритму а не четкое направление.

К сообщению приложен файл. Размер - 14Kb
26 янв 19, 19:30    [21794912]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
mayton
Member

Откуда: loopback
Сообщений: 39224
Хм... 16 на 31 пиксел. Плюс-минус 1. Если просто собрать эти блоки в некий поток. И подать на вход
классификатору. Нечеткому классификатороу. То на выходе мы получим примерно количество
классов похожее на количество букв в тексте. Как классифицировать? Хм... надо подумать.
26 янв 19, 23:10    [21795013]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
mayton
Member

Откуда: loopback
Сообщений: 39224
Чето в голове крутится все время "Сеть Хопфилда". Из остаточных знаний универа.
Она обучается "без учителя". И способна классифицировать образы автоматом без
подсказок. Это как-раз мой кейс. Закинуть бы в нее как в мясорубку все блоки
и получить на выходе классы символов.
27 янв 19, 16:43    [21795240]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
exp98
Member

Откуда:
Сообщений: 1609
mayton
Чето в голове крутится все время "Сеть Хопфилда".
Да я от тоже конкретики уже не помню, а с кучей современных алгоритмов уже не знаком.Но помнится, что память однослойного хопфилда была ограничена ~0,14*N - размерность матрицы.

Вопрос откуда всзял 2 столба, я не понял.
Если речь о табличках с результатами, то обе для 32-бит идля 64 таблички однотипны.
Входная битовая строка, к-рая якобы сжимается F() - иитирует 32 пиксела в горизонтальном растре- да откуда угодно, хоть спиралью по квадратику можно взять.

t= отсчёты на отрезке [0;1]	F(t)=сжимаемая строка	FF(t) - восстановленная строка
Round( ak, 1) = округление вычисленных к-тоф Хаара.

Статистика уникальных к-тов (к-рые вычислены)
Ak - уникальный к-т	Count(Ak) - кол-во
27 янв 19, 23:02    [21795394]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
mayton
Member

Откуда: loopback
Сообщений: 39224
exp98
mayton
Чето в голове крутится все время "Сеть Хопфилда".
Да я от тоже конкретики уже не помню, а с кучей современных алгоритмов уже не знаком.Но помнится, что память однослойного хопфилда была ограничена ~0,14*N - размерность матрицы.

Грубо говоря

16 * 31 = 496

496 * 0.14 = 69 классов символов

Не так уж плохо.
27 янв 19, 23:07    [21795395]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
exp98
Member

Откуда:
Сообщений: 1609
А что с таким факсом делать? А ведь это ещё хорошее качество скана.

К сообщению приложен файл. Размер - 31Kb
28 янв 19, 01:24    [21795421]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
mayton
Member

Откуда: loopback
Сообщений: 39224
(пожимая плечами)

Тогда мне капец.

Но ту бочкообразную дисторсию которую вы изобразили факсом практически получить нельзя. Это больше
похоже на снимок старым мобильным телефоном. Или спецэффект фотошопа.

Я-же все таки расчитываю применить Хафа вначале чтобы гарантировать что линии распознавания стоят под
правильным углом а дальше ... долбануть распознавание?

Ну вобщем я фактически предлагаю попробовать применить некий анализ букв. Повторов? Фракталов?..

А если не взлетело - ну вернуться обратно в JBIG2 который весьма неплох.
28 янв 19, 01:41    [21795423]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
exp98
Member

Откуда:
Сообщений: 1609
Да это в редакторе сделал.
Но "чтобы гарантировать что линии распознавания стоят под правильным углом", нужно, чтобы они действительно так располагались. Радон (а след-но и Хаф) не знают вид кривой заранее. Им это мы говорим через параметры, на которые собирать статистику.

И критерий качества "правильной линии" нужен после отработки метода.
Надежда в том, что "сканируя" поперёк несильно изогнутых текстовых строк методом автокорреляции, высота строк в среднем будет близка к действительной.

Можно ещё как извратиться. Сгладить сам текст хоть гауссом, до полной черноты, получим чёрные ручейки. Методами аналогичными векторизации векторизовать ручейки и рассматривать их как линейный график, для выделения тренда. Наложить тренды на текст. Будем знать траекторию движения вдоль текста, и легче сегментировать буквы.
28 янв 19, 02:50    [21795430]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
mayton
Member

Откуда: loopback
Сообщений: 39224
Когда под сканер кидают толстую книгу в мягком переплете она иногда причудливо изгибается.
И некоторые буквы с форзаца действительно "плывут". Где то на хабре была статья как умные
фильтры корректируют такую дисторсию. Но я-бы пока остановился на картинках где отсканирована
книжка эпохи 90х (у меня таких много) и отсканирована в принципе прилично. С сохранением
перпендикулярных направлений страниц.

Кстати я думал над небольшими линейными искажениями порядка 2-5 градусов разворота вправо
или влево. На качество распознавания букв они не повлияют. Главное чтобы образец (блок)
скользил правильно вдоль направляющей под 2-5 градусов по алгоритму Брезенхема к примеру.
Тоесть грубо говоря мы в букву точно не попадаем. Но нам и не надо. Главное чтобы всё множество
букв никуда не уплывало из блока где они распознаются Хопфилдом или еще чем-то более простым.
28 янв 19, 22:42    [21796350]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
mayton
Member

Откуда: loopback
Сообщений: 39224
И распознавание буквы должно быть толерантно к сдвигу. Плюс-минус 1-2 пиксела вверх-вниз не должно
оказывать сущесвтенного влияния на результат.
28 янв 19, 22:44    [21796351]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
exp98
Member

Откуда:
Сообщений: 1609
Вот это -15град.
Но ещё обратная сторона страницы часто просвечивает (а иногда продавлена буквами с изнанки).

К сообщению приложен файл. Размер - 22Kb
29 янв 19, 12:36    [21796709]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
mayton
Member

Откуда: loopback
Сообщений: 39224
Просвечивающиеся буквы для bi-tonal будут видны как рандомный шум. Поэтому никакого
фильтра компенсации мы применить не сможем.

Если-бы это было Grayscale то да...
29 янв 19, 12:39    [21796714]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
mayton
Member

Откуда: loopback
Сообщений: 39224
Думаю о реализации детектора наклона. Взял пока преобразование Хафа. И на первом-же
тесте - вопрос. Если дана картинка. Допустим для простоты квадратного размера. И в центре
ее стоит 1 пиксел. Как будет выглядеть поверхность Хафа? Если это - суперпозиция синусоид
с разной фазой и разным смещением от центра - то данная точка не должна вызывать никакого
отклика на поверхности. По сути точка - имеет одинаковый вклад во все прямые которые прошли
сквозь нее по всем направлениям.

И какую гранулярность угла выбрать? 1 градус? 1 сотая Pi радианов? Или привязаться к арксинусу
или арк такнгенсу относительно абсолютных координат сечения прямой границ рисунка? Последнее
для меня привлекательно ведь я искал пиксельной точности.
30 янв 19, 14:20    [21797792]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
exp98
Member

Откуда:
Сообщений: 1609
какую гранулярность угла выбрать?
Например половину оценочной высоты шрифта. Это м.б. меньше градуса
30 янв 19, 20:35    [21798266]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
mayton
Member

Откуда: loopback
Сообщений: 39224
А что с тесткейсом в 1 пиксел? Я в ступоре.
31 янв 19, 12:23    [21798633]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
exp98
Member

Откуда:
Сообщений: 1609
mayton
по всем направлениям
это ключевое слово, откуда синусы? прямая определена 2-мя тт. Навскидку и получается, что для каждого танкенса своё пересечение с осью У - условно говоря (надёжнее в полярных координатах). Ну и будет какая-то непрерывная кривулька\прямулька + ещё для пучка, что через точку проходит: вартикальная прямая (ну, или горизонтальная). Это и будут ровные по высоте хребты, остальное 0. Вроде так.
31 янв 19, 20:00    [21799147]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
mayton
Member

Откуда: loopback
Сообщений: 39224
Хорошо. К чорту тангенсы.

Занимаясь этой бедой я неизбежно думаю о предварительной оптимизации.
И возможно это меня тормозит. Писать же концептуальный код который будет
работать сутки - как-то неинтересно.

Значит так. Ищем непустые пикселы. Допустим это будут тексты и картинки нашего факса.

Картинка с другого сайта.

Для каждого пиксела рисуется семейство прямых которые проходят через него
под разными углами (допустим с шагом в 1 градус). Для каждой прямой оценивается
влияние соседних пикселов. Влияние фиксируется как синусоида на поверхности Хафа (справа).
Поверхность - вещественная. Все синусоиды образуют суперпозицию (характерный полутональный рисунок).
Для простоты можно считать что величина 1.0 это минимальный дискретный уровень синусоиды.
Характеристики синусоиды соответсвтуют прямой в полярных координатах где (Ро и Тета) расстояние
от центра коодинат до прямой и угол наклона относительно оси Х).

Вопросы. Имеет-ли смысл ограничить наш текст некоторый выпуклой областью (типа многоунольника
чтобы исключить лишние вычисления).

Имеет ли смысл дважды учитывать влияния одного пиксела на другой когда прямая проходит через них.
Мы фактически дважды посчитаем их. Или трижды для трех.
1 фев 19, 14:28    [21799722]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
mayton
Member

Откуда: loopback
Сообщений: 39224


К сообщению приложен файл. Размер - 61Kb
1 фев 19, 14:33    [21799738]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
exp98
Member

Откуда:
Сообщений: 1609
Так бы сразу и сказал (С)
А то вопрос про одну точку, а ответ нужен про все вместе.

Насчёт дублирования всего. Имею только ИМХО.
Украшательство это. Не надо только секущие крутить на все 365 град. А если пучок переносишь в другую точку, то там эта парная находится в другом окружении, и там её доля другая, так что считать придётся повторно. Не запоминать же статистику для уже проведённой однажды прямой.
И оболочка тоже украшательство, если очень хочется программировать. Хорошо, если она отсечёт черные поля.
1 фев 19, 20:31    [21800139]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
mayton
Member

Откуда: loopback
Сообщений: 39224
exp98
Так бы сразу и сказал (С)
А то вопрос про одну точку, а ответ нужен про все вместе.

Нужен тест. Когда я напишу фунцию для расчета Хафа для одной точки мне будет интересно
правильно я написал или нет. Вы - можете придумать утверждение для данного теста?
2 фев 19, 00:57    [21800257]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
mayton
Member

Откуда: loopback
Сообщений: 39224
exp98

Украшательство это. Не надо только секущие крутить на все 365 град.

Эта фраза меня запутывает. Она либо составлена впопыхах либо вы другое хотели сказать. Вобщем непонятно.
2 фев 19, 00:58    [21800258]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
mayton
Member

Откуда: loopback
Сообщений: 39224
exp98
И оболочка тоже украшательство, если очень хочется программировать. Хорошо, если она отсечёт черные поля.

Нифига себе украшательство!

Это на минуточку - половина площади всего листа. Я напомню что там идет учёт пикселов. И если его
удастся сократить на 50% - это уже блин оптимизация. А прямые тогда заменяются на лучи или отрезки
с более короткой длиной. Не доходя до границ листа.
2 фев 19, 01:00    [21800260]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
exp98
Member

Откуда:
Сообщений: 1609
mayton
Вы - можете придумать утверждение для данного теста?
Если бы делал я, то безусловно проверял бы специальные случаи, прежде, чем сказать, что в первая версия готова, и теперь предстоит более длительный период проверки на разнообразных материалах (по сути приёмка заказчиком).
Однако на данный момент мы можем под этим алгоритмом подразумевать различающиеся процедуры.

Да, я действительно предыдущее писал не то чтобы впопыхых, а просто не особенно обязываясь. И даже вспоминаю, что кое что неверно.
В случае полярных координат 365 град не будет, при 0 в углу поля. В случае тангенсов могло бы быть.
Сначала я подразумевал послед-сть действий типа: в каждой точке проводим пучок. Но сейчас кажется, чо может быть и лучше, если внешним циклом сделать направления и каждое из них ссуммировать внутренним циклом по по всей площади. Тогда в одном направлении любая точка участвует не более 1 раза теоретически.

Но остаюсь при мнении, что я бы сначала сделал для всего листа (и тщательно проверил бы), после чего уже можно оптимизировать.
2 фев 19, 22:35    [21800581]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
exp98
Member

Откуда:
Сообщений: 1609
Я даже скажу, что сам бы сначала сделал на языке как можно более высокого уровня, где бы большинство нюансов обсудил с заказчиком. Потом уже остальное всё. Жаль, что питон не знаю.

Здесь же прикладываю просто рекламные картинки. Вдумываться в них не надо !! Просто хотел понять, сгодится ли для модели. Один рис. фрагмент факса и выделенные формулами 3 напрвления ~86, 60, 45 град без всякого Брэзенхэма или как его звать.
На др-м рис. тоже формулами в пространстве тангенсов вычислял позицию, через к-рую пройдёт эта прямая в исходном пр-ве. Случилась неожиданная красота, решил поделиться.
На самомделе здесь только некий нелинейный срез этих позиций. Думать запрещено!

Но в эксе-2003 колонок 255, даже при транспонировании входит только 255 строк факса.
В 2007-15 их уже много тысяч, но я им дома не пользуюсь. Так что это тупиковый для моделирования метод

К сообщению приложен файл. Размер - 4Kb
2 фев 19, 23:11    [21800590]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
exp98
Member

Откуда:
Сообщений: 1609
"красота"

К сообщению приложен файл. Размер - 27Kb
2 фев 19, 23:12    [21800591]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
mayton
Member

Откуда: loopback
Сообщений: 39224
Я даже скажу, что сам бы сначала сделал на языке как можно более высокого уровня, где бы большинство нюансов обсудил с заказчиком.

(пожимая плечами)

Нет заказчика. Ну или я сам себе заказчик.
2 фев 19, 23:33    [21800604]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
mayton
Member

Откуда: loopback
Сообщений: 39224
exp98
Здесь же прикладываю просто рекламные картинки. Вдумываться в них не надо !! Просто хотел понять, сгодится ли для модели. Один рис. фрагмент факса и выделенные формулами 3 напрвления ~86, 60, 45 град без всякого Брэзенхэма или как его звать.
На др-м рис. тоже формулами в пространстве тангенсов вычислял позицию, через к-рую пройдёт эта прямая в исходном пр-ве. Случилась неожиданная красота, решил поделиться.
На самомделе здесь только некий нелинейный срез этих позиций. Думать запрещено!

Вы могли-бы перенести это в JavaScript? Шаблон я вам подскажу. Там надо будет просто вписать вашу тригонометрию
в процедуры которые я определю. И добавлю "TODO:".
2 фев 19, 23:51    [21800613]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
mayton
Member

Откуда: loopback
Сообщений: 39224
Хм... все оптимизации JavaScript ведут к webassembly. Интересная шняга. Надо-бы поднять отдельно
обсуждение.
3 фев 19, 20:21    [21800895]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
exp98
Member

Откуда:
Сообщений: 1609
Про заказчика я условно = степень завершённости.
mayton
Вы могли-бы перенести это в JavaScript?
Э-ээ, дело в том, что в эксе формулы хороши тем, чтобы не прогать. Взамен приходится многие вещи делать руками и повторно.

Из формул здесь единственная типа y=kx+b, перебор k и b (или через полярные корд-ты). Что тут переносить? А вот манипуляции ручками как раз и надо прогать.

Нужна загрузка картинки на канву и в массив.
Работа с канвой - в JSе канву никогда не прогал.
Определить диапазон для исходных переменных,
для целевых переменных
Ну т.е. задать преобразование.
В циклах по направлениям и точках провести суммирование (либо процентовку).
Добавить процедурку - показометр второго рисунка в целевом пр-ве.
Поотладить это всё.

Пустяк для JSсчика. Но это реально затрачиваемое время. Мне это не один час. Боюсь обещать.

А главное в конце ещё и поискать надо ту самую хребтину, к-рая должна индицировать направление. А их как минимум 2: вертикальная и гориз-ная. К тому же в индицирующем пространстве мы не имеем геометрических координат исходного пр-ва, а лишь направления.
И м.б. вместо рисования прямых каждый раз поворачивать картинку, а тогда нужно заранее расширить размеры поля.
3 фев 19, 21:37    [21800915]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
mayton
Member

Откуда: loopback
Сообщений: 39224
Я не JS-ник. Но я написал заготовочку. Которая позволит хотя-бы как-то на едином языке что-то разработать.

Вот. Прикладываю. Там в секции TODO: надо подставить картинку которую надо обработать.

+
<!DOCTYPE html>
<meta charset="UTF-8">

<head>
   <style>
    body {
      background-color: gray;
    }
	#main{
	  position:absolute;
	  width:1024px;
	  height:512px;
	}
	#main > div {
	  float:right;
	}
	#d1{
	  width:512px;
	  height:512px;
	}
	#d2{
	  width:512px;
	  height:512px;
	}
   </style>
</head>

<HTML> 

<script type="text/javascript">
	"use strict";

	// 2-Feb-2019 : mayton : "Initial commit"

	function getR(canvas, pix, x, y) {	
		return pix[x * 4 + y * canvas.width * 4];
	}

	function getG(canvas, pix, x, y) {
		return pix[x * 4 + y * canvas.width * 4 + 1];
	}

	function getB(canvas, pix, x, y) {
		return pix[x * 4 + y * canvas.width * 4 + 2];
	}

	function filterHighFrequency(canvas, pix, x, y) {

		var m =    [[ -1, -1, -1 ], 
		            [ -1,  9, -1 ], 
		            [ -1, -1, -1 ]];		

		var r = 0;
		var g = 0;
		var b = 0;
		for(var yy = 0; yy < 3 ; yy++) {
			for(var xx = 0 ; xx < 3 ; xx++) {				
				var tm = m[xx][yy];				
				r += (getR(canvas, pix, x + xx - 1, y + yy - 1) * tm);
				g += (getG(canvas, pix, x + xx - 1, y + yy - 1) * tm);
				b += (getB(canvas, pix, x + xx - 1, y + yy - 1) * tm);
			}
		}
		return col(r,g,b);
	} 

	function getPixelOffset(canvas, x, y) {
		return x * 4 + y * canvas.width;
	}
	
	function col(r, g, b) {
		return "rgb(" + r + "," + g + "," + b + ")";
	}

	// mayton:> converts from (r,g,b) to grayscale value normalized to 0..1
	function brighness(r, g, b) {
		return r * 0.299 + g * 0.587 + b * 0.114;
	}

	window.onload = function() {
		console.log("01::onload");
    	
		var WIDTH = 512;
		var HEIGHT = 512;

    	var source = document.getElementById("source");
    	var sourceCtx = source.getContext("2d");   

    	var image1 = new Image();
    	// TODO: Replace with correct image
	    image1.src = "remastered-lena-512x512.png"; //"b_img7.jpg"; //"faxBW2-15grad-small.png"; 	

    	image1.onload = function() {
    		console.log("02::image loaded");
    		sourceCtx.drawImage(image1, 0,0);    		
	    	var dest = document.getElementById("dest");
	    	var destCtx = dest.getContext("2d");

	    	console.log("03::getting source image data");

	    	var sourceImageData = sourceCtx.getImageData(0, 0, source.width, source.height);
			var pix = sourceImageData.data;
	    	var i = 0;

	    	console.log("04::start image processing");
	    	var rmax = 0;
	    	var avgBr = 0.0;
	    	for(var y = 1; y < 512 - 1; y++) {
	    		for(var x = 1; x < 512 - 1; x++ ) {
	    			//------------------------- TODO: Implement here...	    			
	    			destCtx.fillStyle = filterHighFrequency(source, pix, x, y);
	    			destCtx.fillRect(x, y, 1, 1);
	    			//-------------------------------------------	    			
	    		}
	    	};   

	    	console.info(" average mean = " + avgBr / WIDTH / HEIGHT / 255.0); 	

	    	console.log("05::finished")
    	}
    	
    	
	};
</script>

<BODY background = "gray">
	<div id="main">		
		<div id="d1"><canvas id = "dest" width="512" height="512"/></div>
		<div id="d2"><canvas id = "source" width="512" height="512"/></div> 
	</div>
</BODY>

</HTML>


Принцип такой. Слева - источник. Справа - получатель. Получатель имеет вольную семантику. Это не обязательно
картинка. Это может быть как раз пространство Хафа. Где более яркому цвету соотв. более выская величина Z
на поверхности X,Y.
3 фев 19, 21:43    [21800917]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
mayton
Member

Откуда: loopback
Сообщений: 39224
Картинка с печально известной мадам Леной. У меня в браузере выглядит как-то так.
В качестве tech demo я добавил фильтр высоких частот. Но его надо выкинуть и заменить на то
что надо нам по смыслу.

К сообщению приложен файл. Размер - 144Kb
3 фев 19, 21:56    [21800921]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
mayton
Member

Откуда: loopback
Сообщений: 39224
exp98
А главное в конце ещё и поискать надо ту самую хребтину, к-рая должна индицировать направление. А их как минимум 2: вертикальная и гориз-ная. К тому же в индицирующем пространстве мы не имеем геометрических координат исходного пр-ва, а лишь направления.
И м.б. вместо рисования прямых каждый раз поворачивать картинку, а тогда нужно заранее расширить размеры поля.

Давайте предположим что мы сканируем журнал пчеловодов.
Есть пол-листа - плоский текст. А на другой половине - картинка
с пчелиными сотами. Снятая в высоком контрасте.

Предполагаю что на плоскости Хафа мы детектируем углы в 0 и 90 градусов.
(это - направления текста) Тут как-бы все ОК. И еще странные локальные всплески
по углам 60 градусов. Минус 60. Это направления линий пчелиных сот.
Чисто технически нам стоит задача - понять где правильные локальные максимумы.
И где - фейковые образованные иллюстрацией.
3 фев 19, 22:01    [21800922]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
exp98
Member

Откуда:
Сообщений: 1609
Ловко сделано, практически всё готово.

Загвоздка в том, что только по Хафу не получится и не могло.
В сотовой конкретике, хребты пересекаются под 60 гр, а текстовые под 90.
Но с шашечным журнал фокус не пройдёт.
И заранее пока неизвестно, чей хребет будет выше: графический или текстовый. Готов повторить: размываем текст, чтобы получить полосы посплошнее.

Я не искал, как это давно решили у Арлазарова и Яна, или как это делают в дискретке.
В "КБ и НИИ" подобное традиционно делали через изучение 2-мерного корреляционного поля амплитуд. Разное там, кластеры, периоды, частотные спектры ... нужно же отличить в окуляре танк от избушки, БР от восхода Луны, свою БР от НЛО, подводку от косяка рыб ...

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

Как и для избушки, нужна типовая статистика. Других дум пока не имею.
Только хочу ещё сказать, что не верю в метод сжатия путём распознавания текста, уж лучше жипег. С текстом неизбежны искажения и ложные сработки. В этой же теме я приводил примеры сишного распознавания - слёзы, правда с опцией 2-язычности в комментариях проги.
3 фев 19, 23:08    [21800946]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
mayton
Member

Откуда: loopback
Сообщений: 39224
Смотрите. Чтобы у нас не вышло диалога каждый о своём. Я предложил тему. Вы можете
не соглашаться с методикой. И высказывать ваши прогнозы.

Но я ожидаю предложений. Потому что на 1 оптимиста всегда найдется 10 000 пессимистов.

Ваше сишное распознавание я не понял по юзкейсу. Тоесть как его использовать? И где его
полезный эффект. Как его "пощупать" за вымя?
3 фев 19, 23:32    [21800954]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
exp98
Member

Откуда:
Сообщений: 1609
mayton, забудьте уже о тех файлах. Я сейчас написал о том, насколько плохо распознался скан на сервере ФР для халявных распознаваний. Можно сказать совсем не. Необходимо понимать, что мой оптимизм либо пессимизм непосредственно мотивирует меня. Заклинания здесь не помогут.

Можно остановиться на вопросе, как отсеять ложные "прямые". Не могу уверенно сказать, что по анализу признакового пр-ва это выяснится однозначно. Похоже, что надо получить и посмотреть 4 результата, как группируются яркие точки.
Сотовый случай как средней паршивости,
шашечный - как худший.
Раздельно, если клетки у них плоские, с малой долей полутонов, и когда не плоские.

Насчёт проги. В инете выложены тексты этого суммирования из матлаба. Можно их приспособить. Там примерно так
//Линейная интерполяция
TAU = -N/2:N/2;
T = length(TAU);
P = tan(-pi*89/180:pi/180:pi*89/180);
R = length(P);
result = zeros(T, R);
for p = 1:R
for th = 1:T
for x = -T:T
xx = T+x; ................
4 фев 19, 18:39    [21801513]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
mayton
Member

Откуда: loopback
Сообщений: 39224
Шашечки сдетектируются нормально после применения фильтра границ.

Литература отсылает меня к фильтру Собеля. Но... как мне кажется для черно-белых пикселов
можно его сильно упростить до сложения по модулю два по вертикали и по горизонатли.
Уже когда-то такое делал.
4 фев 19, 18:59    [21801530]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
exp98
Member

Откуда:
Сообщений: 1609
В общем пример сразу не прошёл. Откопал МЛ, там есть примеры обоих пр-ний. Прошли практически сразу на примере фрагмента факса с поворотом на 1.5 гр (выше прикладывал).
Складываю в 2 порции вложений. Тестовые рис. с графикой надо готовить, могу посмотреть.
Правда думаю, что теперь только в выхи.

Радон здесь. В общем поворот на ~1-2 град детектируется отчётливо вплоть до самих строчек.
Угол - нижняя ось, диапазон от -10 до 170 град, тогда отсётливо виден 2-й пунктир около 0-2 гр - вертикальное направление суммирования.

К сообщению приложен файл. Размер - 100Kb
5 фев 19, 23:17    [21802246]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
exp98
Member

Откуда:
Сообщений: 1609
Хаф.
Для него там готовое решение вместе с индикацией точек и с показометром найденных прямых на исходном рисунке.

Читается примерно так же, только, если в Радоне я сделал шаг по 1/2 гр, а по х шаг=2,то здесь куча вложенных п/программ - уже небыло сил влезать в них.
2 файла в зипе.

К сообщению приложен файл (Hough15grad.zip - 84Kb) cкачать
5 фев 19, 23:23    [21802249]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
exp98
Member

Откуда:
Сообщений: 1609
В случае Хафа наблюдаются ещё 3слабых вертик пунктира. Я так понял, что это 3 изолированные точки в правой верхней части исходника.

К сообщению приложен файл. Размер - 22Kb
5 фев 19, 23:27    [21802252]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
mayton
Member

Откуда: loopback
Сообщений: 39224
Спасибо за investigation. Это часть задачи. Нужно детектировать еще абзацы и строки.
Иначе - символы не найду.

По поводу МЛ.

Мне МЛ - не помошник. Нужен код на императивном языке.
6 фев 19, 02:04    [21802296]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
exp98
Member

Откуда:
Сообщений: 1609
Х-ха, зато мне МЛ в помощь. Это самая натуральная исследов-ская задача. Если не считать того, что в распознавалках этим уже занимались.

Теперь более уверенно могу сказать, что просто так одним методом не обойтись. Даже в такой постановке.Здесь нет детерминизма. Выдумаете, почему никто не бросает сюда пустячный код? Преимущественно потому, что неумеют или отвыкли от исследовательских задач. Детерминизма не видят, либо по существу задачи, либо по предопределённости результата.

Конкретно, надо разделять области с сужественным преобладанием графики либо текста. Сперва на моделях. К примеру, как определяются на камеру номера авто?

Абзацы и строки.
Снова конкретика. В Радоне в центре основной вертикальный пунктир. Он разбит на 2 большие группы. Это и есть два больших абзаца, внутри них пунктирчики - строки. Но это могут быть не все строки, автоХаф это и показал, что не все строки понимамет. Догадываетесь, почему не все?

Так вот ранее я говорил о предположениях для существенно текстового фрагмента. Основная идея - чересполосица. Если шрифт одного размера, хоть и курьер, полосы периодичны. Если встречается немного мелкого или текст плывёт - квазипериод. В этом я вижу источник недетерминированности. Поэтому и интесно, как решали такое в ФР и КФ.

С абзацами полный абзац. Здесь хорошо, что они разделены воздухом. В наших прежних книгах абзац = красная строка, а длина красной строки может оказаться короче следующей.
Вот такое предварительное описание проблемки.
6 фев 19, 12:48    [21802618]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
exp98
Member

Откуда:
Сообщений: 1609
Абзацы - это уже ближе к некой кластеризации.
6 фев 19, 12:51    [21802623]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
exp98
Member

Откуда:
Сообщений: 1609
Приветствую! Вопрос по графике.
В общем пробовал вариант на ЯС. И, бл-я, знал, что придётся трахаться. Вариант пробный, в МЛ нормально работает и полутоновый показометр.
Здесь же результирующая часть как будто в ч/б,хотя значения занимают весь спектр, что видно в тхт-файле из куска, полученного в МЛ.
Сделал 1:1 как в МЛ, хотя числа могут оличаться на неск %, фигня.

Для простоты на рисунке наклонная линия под углом 18гр., пересечение с ОУ около 103.
Вокруг точки должен расходиться наклонный полутоновый "конус", но не расходится.
14 фев 19, 22:09    [21810017]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
exp98
Member

Откуда:
Сообщений: 1609
...забыл вложить

К сообщению приложен файл (html.zip - 5Kb) cкачать
14 фев 19, 22:10    [21810018]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
mayton
Member

Откуда: loopback
Сообщений: 39224
exp98, спасибо уже смотрю. Вот что у меня получилось.

Я так понимаю фильтр границ вы пропустили и подложили сразу отфильтрованное. Ну ОК. Это тоже норм.
Фильтр границ во много раз проще чем детектор направления.

Я с вашего позволения сегодня отвлекусь на каталогизацию фоток. А где-то с выходных начну смотреть
ваш код и потихоньку портировать его интересные части с JavaScript в Java.

К сообщению приложен файл. Размер - 28Kb
15 фев 19, 00:18    [21810086]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
exp98
Member

Откуда:
Сообщений: 1609
Да, именно это получаю в МЛ. Вчера я наверное впервые по-бабски сорвался, клава достала, а тут ещё это ... на 64-й очень неудобно, МЛ на х32, и здесь 4 браузера, 2 дохромиумных + старенький ИЕ. Догадываюсь, что в этом дело, причём как раз хромиумный не знает что такое gray, однако знает blue, но зачем-то ругается на кроссориджин - это на локохосте, ИЕ - ещё чего-то не понимает, а, ещё в нетбинсе встроенный браузер тоже чего-то хочет, но сам нетбинс всю память занимает, а выполняет в 8 раз медленнее, в общем бардачок.
15 фев 19, 11:51    [21810416]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
exp98
Member

Откуда:
Сообщений: 1609
В моём браузере видна только самые яркие точки в центре, а здесь я при отладке растянул их по горизонтали, просто утроил.

Я рекомендую не спешить с портированием. Поясняю недостатки.
Вариант с тангенсами - простейший в мат-ом плане, ничего вращать не надо, параметры - прозрачнее не бывает. Но у него куча недостатков.
Дискретность - промахи, реальные точки не попадают в уравнение прямой.
Вертикали - неограниченная область значений для параметра ТАУ в уравнении секущей прямой.
Горизонтали - неограниченная область по горизонтали.
Бороться можно, разбивая область на клетки, а затем исследовать каждую клетку, затем склеивать результаты.

В моём же варианте детектирую прямые поближе к х=0 и пересекающие ось У в [-2Ny; 3Ny], при этом ещё и показывается на экране только для [0; Ny].
Промахи из-за подстановки Х в уравнение прямой можно уменьшить вывернув циклы наизнанку и уравнени х= (y - b) / tg(). Но тогда имеем котангенс и , след-но, проблемно детектировать горизонтали.

Это геморрой.

Поэтому полярные к-ты практичнее. А след-но как раз от "интересной части" останется только идея 3-х вложенных циклов, но даже границы циклов несколько иные, зато заведомо ограниченные.
15 фев 19, 12:19    [21810444]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
exp98
Member

Откуда:
Сообщений: 1609
Установил браузер ФФ, теперь рисует.
Небольшая галерея изображений в 2-х, если поместится или в 3 посылках.
Объяснений не пишу,т.к. только что написал очень много в блокноте, хотел сделать сэйв, новсё зависло. Ну а по вопросам - чё ж не ответить.

К сообщению приложен файл (MAIOR-multi.zip - 139Kb) cкачать
17 фев 19, 23:24    [21812335]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
exp98
Member

Откуда:
Сообщений: 1609
следующее пытаюсь ... не прошло, будет 3 посылки.

К сообщению приложен файл (4sql.zip - 78Kb) cкачать
17 фев 19, 23:28    [21812346]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
exp98
Member

Откуда:
Сообщений: 1609
последняя.

К сообщению приложен файл. Размер - 80Kb
17 фев 19, 23:29    [21812348]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
mayton
Member

Откуда: loopback
Сообщений: 39224
exp98
В моём браузере видна только самые яркие точки в центре, а здесь я при отладке растянул их по горизонтали, просто утроил.

Я рекомендую не спешить с портированием. Поясняю недостатки.
Вариант с тангенсами - простейший в мат-ом плане, ничего вращать не надо, параметры - прозрачнее не бывает. Но у него куча недостатков.

Я не спешу. Есть у меня графическая библиотечка. Она на 20% написана и остальное - разваленный
и недописанный код в состоянии вечного "TODO". Я ее начал писать в 2000x с перерывами на несколько лет.
В основе там лежит работа с цветом. И заложен фундамент для графических алгоритмов. Есть комплексные числа.
Кватернионы. Есть основы для работы с матричной алгеброй.

Распознавание направления я планирую портировать с JavaScript на Java. Я думаю это не будет сложно.
18 фев 19, 00:08    [21812412]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
mayton
Member

Откуда: loopback
Сообщений: 39224
exp98
последняя.

На картинке на фазовой плоскости видна такая полосатая спираль. Это я так понимаю
детектировано направление горизонтальных прямых под 0 градусов относительно OX ?

И еще. Вы пробовали сравнивать разницу Картинка -> Hough и Картинка -> Фильтр границ -> Hough?
Насколько получается лучше детектирование?
18 фев 19, 00:11    [21812418]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
Dima T
Member

Откуда:
Сообщений: 13348
https://hitech.newsru.com/article/15feb2019/nvidia
Нейросеть Nvidia научилась генерировать реалистичные лица людей

В конце прошлой недели компания Nvidia опубликовала в открытом доступе код алгоритма StyleGAN, позволяющего генерировать новые изображения при помощи нейросетей. Среди прочего программа умеет генерировать пугающе реалистичные лица несуществующих людей.

...

Теоретически наверно можно сгенерить нейросеть по готовой картинке.
Интересно что занимает больше места: картинка или нейросеть для ее генерации?
18 фев 19, 08:13    [21812492]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
mayton
Member

Откуда: loopback
Сообщений: 39224
Dima T
https://hitech.newsru.com/article/15feb2019/nvidia
Нейросеть Nvidia научилась генерировать реалистичные лица людей

В конце прошлой недели компания Nvidia опубликовала в открытом доступе код алгоритма StyleGAN, позволяющего генерировать новые изображения при помощи нейросетей. Среди прочего программа умеет генерировать пугающе реалистичные лица несуществующих людей.

...

Теоретически наверно можно сгенерить нейросеть по готовой картинке.
Интересно что занимает больше места: картинка или нейросеть для ее генерации?

Перед нейросетями ставятся другие задачи. Быстрое принятие решений например.
А хранение информации - это не про нейросети.

Если говорить про способы хранения информации в биологии - то там очень многое основано
на аналоговой технике. А это вобщем-то очень далеко от современного It. Вернее сказать
It еще слишком мало знает об этой теме. Забавную цитату сказал Савельев. Буквально
- "те личности которые строят современный AI совершенно не имеют представления о том как работает
человеческий мозг". Вот такой вот факт.
18 фев 19, 10:47    [21812619]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
exp98
Member

Откуда:
Сообщений: 1609
Dima T
Интересно что занимает больше места: картинка или нейросеть для ее генерации?
Если есть хорошие закономерности. От картинки зависит. Так же, как и создание геометрч-х фракталов. Можно задать 10-ю парм-ми, можно 1000-ю и т.д. Как и трутайп с кривыми Безье, параметрчески, как и векторный SVG.

maton
...такая полосатая спираль. Это я так понимаю...
Да, угол к ОХ около 0, ось У смотрит вниз. Для себя я называю это позвоночником, а яркие штрихи позвонками. Каждый позвонок = 1 строка текста, уровень соответствует картинкам.
Аналогично в художественных изображениях отсутствует позвоночник. Там только косая "мышца", ширина к-рой определяется "углом зрения" ~45гр (в моей реализации).
Мои ограничения с дргуогой стороны позволяют игнорировать крутые tg()~ +-2-3 наклонные линии, отстоящие подальше от левого края.
18 фев 19, 12:24    [21812799]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
mayton
Member

Откуда: loopback
Сообщений: 39224
exp98
Мои ограничения с дргуогой стороны позволяют игнорировать крутые tg()~ +-2-3 наклонные линии, отстоящие подальше от левого края.

Вот эту фразу я вообще не понял. Можете на картинке обрисовать где этот левый край и какие это крутые тангенсы?
18 фев 19, 12:41    [21812827]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
exp98
Member

Откуда:
Сообщений: 1609
Продолжу выводы.
Позвонки, для верхнего абзаца достаточно блееклые из-за того, что строки короче, а они короче из-за растра. Сами позвонки более косые (косичка) тоже из-за растра.
Это приводит
а) к отсутствию "глобальной" выпуклой оболочки вокруг всего текста
б) затрудняет автоматич-ое выделение абзацев (низкая яркость позвонков может приводить к ложным абзацам - думаю нужен просто более изощрённый метод детектирования абзацев - а вообже, нужно ли это ?).

Надо выделять кластеры раздельно для текстов и растров.
"Преимущественное направление текста" находится по максимуму в позвоночнике. У позвоночника может быть характерный паттерн. Привёл паттерн отдельным рисунком.Он для того же рекламного буклета, только выполнен встроенным Радоном в МЛ. А там центрирование 0 в картинке, и синусоиды (т.е. полярные к-ты). В рез-те позвоночник кверху ногами, зато позвонки не косые, и даже суммарный их профиль (это тоже сглаживание) сохраняет максимумы и минимумы. Чего нельзя сказать про мою реализацию. Ввыше написал, что мой первый абзац более размытый и более косой.,сглаживание не поможет, и последнюю строчку 1-го абз автоматически распознать нет гарантии, и даже можно спутать с началом очередного, якобы, абзаца.
АвтоКорреляц-ная кривая невыраженно детектирует периодичность строк ~22пикс. (просто картинки уменьшены, но файл с числами у меня полный).
18 фев 19, 12:43    [21812836]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
exp98
Member

Откуда:
Сообщений: 1609
mayton, левый край= ось У,
диапазон параметра ТАУ [-2Ny; 3Ny], tg()= +2, tg()= -3, Тангенс= отношению катетов.
луч, поведённый из прав-нижнего угла вверх под этим улом tg()= +2, пересечёт ОУ в т=-2Ny
аналогично, если вниз.
Так понятнее?
18 фев 19, 12:48    [21812850]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
mayton
Member

Откуда: loopback
Сообщений: 39224
exp98
а) к отсутствию "глобальной" выпуклой оболочки вокруг всего текста

Если речь идет о выпуклой оболочке вокруг абзаца - то я планировал ее искать фильтром гаусса + threashold + неким
фильтром детектором прямоугольников.
18 фев 19, 12:50    [21812853]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
mayton
Member

Откуда: loopback
Сообщений: 39224
exp98
mayton, левый край= ось У,
диапазон параметра ТАУ [-2Ny; 3Ny], tg()= +2, tg()= -3, Тангенс= отношению катетов.
луч, поведённый из прав-нижнего угла вверх под этим улом tg()= +2, пересечёт ОУ в т=-2Ny
аналогично, если вниз.
Так понятнее?

Давайте чуть позже я нарисую свою картинку а вы скажете ОК или не-ОК.
18 фев 19, 12:51    [21812855]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
exp98
Member

Откуда:
Сообщений: 1609
mayton, обрисовать: на космическом рисунке есть несколько прямолинейных штанг 3 ил 4.
В принципе,в диапазон ТАУ их т.т пересечения с ОУ у всех должны попасть, а был бы наклон покруче к ОХ, не попал бы.
Правда из-за того, что на экране выведена только часть диапазона ТАУ [0; Ny], одна или более штанга на целевом постранстве, как бы, не детектирована, т.е. прога её как бы не замечает.
18 фев 19, 12:57    [21812873]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
exp98
Member

Откуда:
Сообщений: 1609
Ещё коммент.
Освежил в памяти картинку. Ну да, 2 самых крутых наклона штанг не видны, 2 других видны.

Космический рисунок расположен без сдвига как и другие, вертик. и гориз. шкалы по периметру явлются частью рисунка. В частности на полученном "рентгеновском снимке грудной клетки" проступают рёбра. Это следы детектирования чисел на вертик-й шкале. Протяжённость "рёбер" по диагонали означает одновременно и широкий спектр прямых и высокий диапазон их пересечения с ОУ.
18 фев 19, 13:13    [21812919]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
exp98
Member

Откуда:
Сообщений: 1609
exp98
Протяжённость "рёбер" по диагонали означает одновременно и широкий спектр прямых и высокий диапазон их пересечения с ОУ.
широкий спектр наклона прямых к ОХ, походящих через каждое число, и широкий диапазон (параметр ТАУ) пересечения прямых с ОУ.
18 фев 19, 13:17    [21812932]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
exp98
Member

Откуда:
Сообщений: 1609
mayton
портировать с JavaScript на Java. Я думаю это не будет сложно.
Конечно, это преобразование не сложнее поворота точки на угол. Я глянул в их сишный текст. Даже с учётом разных там оптимизаций и начальных проверок весь файл 7Кб.

Насчёт сравнения с Хафом. В самом начале сравнивал в МЛ на примере прямоуг-ка и эллипса. Разница там, как теперь я понимаю, по причине разных писателей и связана больше с представлением результатов.
Возможно, тонкая разница обоих методов тоньше разрешающей способности моих извилин, "в Радоне2 параметра, в Хафе счётчики ....". Для случая полярных координат - принцип ИДЕНТИЧЕН, реализация может разниться. Я уже высказывался, что этот Хаф хафнул у Радона ...

Просто в хафе можно проектировать на любое параметрическое криволинейное многообразие, необязательно на линейную гиперплоскость. На поверхонсть унитаза например Если заранее знать описывающие (в матем. смысле) параметры, ха-ха.
А истиный Радон должен быть линейным, иметь все объявленные св-ва, включая связь с фурье и т.п. Но нам эта связь не треб.

Лишь для проверки свойства для секущих прямых: прямая переходит в точку, точка - в прямую (с т.зр. математики). Реально же если как у меня, то в дискретике прямая - в конус, точка, цифирки, маленький шарик - в почти прямую (рёбра на "рентгеновском снимке").
18 фев 19, 14:57    [21813089]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
mayton
Member

Откуда: loopback
Сообщений: 39224
Собака и монетки выглядят подозрительно похоже на фазовой диаграмме.
20 фев 19, 18:44    [21815723]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
exp98
Member

Откуда:
Сообщений: 1609
Обижаешь, Начальник! Принтскрин это ...

К сообщению приложен файл (public_html.zip - 49Kb) cкачать
20 фев 19, 21:16    [21815820]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
exp98
Member

Откуда:
Сообщений: 1609
Всевозможная грязь в прогах - мой рабчий стиль с детства, уж извиняйте, на листочках у меня тож самое, из-за этого давно перешёл на карандаш.
В предыдущей проге на вход надо было подать выСобеленный рис, в этом варианте по задумке нужен цветной (возможно, что не со всякой "палитрой").
Схематично моя логика в ф-ции onlad().

Идея логики.
// В исходном рисунке (цветном) выделить края в массив В(). Нарисовать новый рис рядом с исходным.
// В тот же В() записать преобразование радона-хафа с тангенсами. На том же месте рисовать новый рис.

Псевдокод.
pix= GetFile("имя.файла")
DrawImage(pix)
B[][]= Sobel(pix)
DrawImage(B[][])

  // return; // чтоб посмотреть только Sobel(pix), раскоментить эту строку
  // вместо возврата можно сделать паузу типа alert("Любуемся выделенными краями", 10000);

B[][]= RadoHough(B[][])
//B[3x + 0,1,2][]=B[x][] // утроение по горизонтали,т.к. ширина канвы 512, а угол 180*3 ~ 512
DrawImage(B[][])
end.
Такая была задумка.
Возможную ошибку прежде всего стоит искать в районе
B[][]= RadoHough(B[][])

Глазкамми ошибку не нахожу.
21 фев 19, 12:41    [21816191]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
mayton
Member

Откуда: loopback
Сообщений: 39224
exp98, грязь мы зачистим. Это не страшно.

Вы пользуетесь sourceforge, github, bitbucket?
21 фев 19, 14:58    [21816446]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
exp98
Member

Откуда:
Сообщений: 1609
Ой, нет, увольте. Раз попробовал: в одном бабки, в другом региться - нэнавввижжу.
В МЛ те же рез-ты.
21 фев 19, 18:45    [21816759]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
mayton
Member

Откуда: loopback
Сообщений: 39224
Везде бесплатно. Я не платил нигде.
21 фев 19, 18:51    [21816766]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
exp98
Member

Откуда:
Сообщений: 1609
Неважно, в ближайшиее же время у меня 2 варианта. Как дядя Гена, либо никак. В обоих случаях нафиг региться, тем более, что нэнаввижу.
21 фев 19, 19:05    [21816779]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
mayton
Member

Откуда: loopback
Сообщений: 39224
exp98
В предыдущей проге на вход надо было подать выСобеленный рис, в этом варианте по задумке нужен цветной (возможно, что не со всякой "палитрой").

Для bi-tonal картинки с которой я начал есть предположение что Собель вырождается в простой фильтр границ.

exp98
// В тот же В() записать преобразование радона-хафа с тангенсами. На том же месте рисовать новый рис.

Непонятно. Все таки вы реализовали радона? Я к тому что мне тяжелая артиллерия не нужна. Только-бы
детектировать 2 главных направления. Строки. И некая вертикальная линия абзацев. Дожны быть примерно
под 90 градусов.

Поэтому если есть возможность упростить Радона - ябы хотел упростить. У него слишком большой универсализм.
21 фев 19, 19:19    [21816788]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
mayton
Member

Откуда: loopback
Сообщений: 39224
exp98
Как дядя Гена, либо никак.

Хм... я считал что я знаю много метафор и мемов... Но тут не понял. Шутка йумора?
21 фев 19, 19:20    [21816789]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
exp98
Member

Откуда:
Сообщений: 1609
Возвращаюсь к баранам.
Преобразование - самая лёгкая часть,но оно следует за этапом отделения графики от текста.

Сделал пробный МЛ-ный вариант (образец картинки приложен).
+
1) Составить ковариационную матрицу
2) убедиться, что характеристики регионов разнятся
3) вычленить регион(ы) графики и текста(ов) - проблема 1 (рисунки приложены)
3.1) глазками убедились,что всё по задумке
3.2) У= корень(диагональ) это СКО .... столбцов
3.3) посмотрели и убедились, что плоский график по задумке.
3.4) робастно сгладив, обнаружили 2(3,4,....) кластера (это отдельный метод) да и без сглаживания видно
3.4.1) проблема 1.1, графика может перемежаться с текстом,разделятьсялишь одной текстовой строкой ит.п.
3.5) Наконец выделили регионы.


Это пока на одном примере, а нужна репрезентативная подборка - проблема 2.

К сообщению приложен файл (covar.zip - 62Kb) cкачать
21 фев 19, 19:26    [21816793]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
exp98
Member

Откуда:
Сообщений: 1609
Мой радон-хаф (я их уже не отличаю) проще некуда, всё наверчено вокруг ур-ний у=кх+в, а лучше в полярных, тогда будет уCos()+xSin() и поворот оси для каждого угла. Тоже несложно, но объективно более трудоёмко, а я ленивый.

Метафора? нет, это его имя, судя по нику, (ну там ещё second name).

Перпендикуляры есть - макс точка вычисляется, остаётся её нарисовать в предположении, что имеем преимущественно текстовый контент, в МЛ пока всё.

Вот я обрисовал выше 2 стороны одной проблемы: кластеризация. Проблема в том, что для глазок всё очевидно, для автоматизма куча вариантов. Таково моё видение этого участка задачи. А на пальцах всё просто.
21 фев 19, 19:38    [21816805]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
Dima T
Member

Откуда:
Сообщений: 13348
Зря вы скриншоты игнорируете.
Есть идея сделать очередное удаленное управление (прямая передача по UDP), т.к. тимвьюер стал монополистом и просто беспредельничает в плане финансов. Хочу создать бесплатный аналог, желательно технически превосходящий.
Алгоритмы построения снимка на основе предыдущего снимка тут очень пригодятся.
21 фев 19, 20:44    [21816847]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
exp98
Member

Откуда:
Сообщений: 1609
Это а-ля удалённый рабочий стол виндовса? около 4-х лет за ним просидел. Так-то ничего, но в сочетании с удалённым дебилдером и удалёнными файлами жуткие тормоза.
А по сути если, то совсем не в направлении топика. Ближе к мпегу. Те капли, что сейчас из себя выдавливаю, экспромты. Не преувеличивайте мои, во всяк, возможности.
21 фев 19, 21:14    [21816862]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
Dima T
Member

Откуда:
Сообщений: 13348
exp98
Это а-ля удалённый рабочий стол виндовса?

Если очень приближенно, то да. Главная проблема пробиться через наты.
21 фев 19, 21:20    [21816864]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
mayton
Member

Откуда: loopback
Сообщений: 39224
exp98, я в общей сложности от вас получил аж 6 архивов. И что теперь с ними делать?

4sql.zip
covar.zip
Hough15grad.zip
html.zip
MAIOR-multi.zip
public_html.zip


Трудно без версионного контроля. Мдя... Попробую понять где сорцы. И где актуальное.
22 фев 19, 02:16    [21816950]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
mayton
Member

Откуда: loopback
Сообщений: 39224
Dima T
Зря вы скриншоты игнорируете.
Есть идея сделать очередное удаленное управление (прямая передача по UDP), т.к. тимвьюер стал монополистом и просто беспредельничает в плане финансов. Хочу создать бесплатный аналог, желательно технически превосходящий.
Алгоритмы построения снимка на основе предыдущего снимка тут очень пригодятся.

Есть бесплатный VNC. Лет 10 назад он уже был портирован с Linux на Windows и вполне себе работал.

Есть еще Radmin под Windows. Последний раз я его использовал во времена Windows2003/XP. Очень надежная
и нетребовательная штука.
22 фев 19, 02:25    [21816952]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
mayton
Member

Откуда: loopback
Сообщений: 39224
Последние сорцы тут и тут.
html.zip (14-Feb-2019)
public_html.zip (20-Feb-2019)

Ревизия от 20-Feb не работает. Вобщем ничего не рисует.
22 фев 19, 02:45    [21816954]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
Dima T
Member

Откуда:
Сообщений: 13348
mayton
Есть бесплатный VNC. Лет 10 назад он уже был портирован с Linux на Windows и вполне себе работал.

Есть еще Radmin под Windows. Последний раз я его использовал во времена Windows2003/XP. Очень надежная
и нетребовательная штука.

Они не подходят, т.к. сервером является тот, кем надо управлять, а он за NAT`ом, т.е. без проброски порта туда не прорваться.
Собственно в этом основная проблема: юзер, к кому надо подключиться, должен выполнить для настройки сложные действия, значительно превышающие его ИТ-квалификацию.
22 фев 19, 07:20    [21816973]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
mayton
Member

Откуда: loopback
Сообщений: 39224
Dima T
mayton
Есть бесплатный VNC. Лет 10 назад он уже был портирован с Linux на Windows и вполне себе работал.

Есть еще Radmin под Windows. Последний раз я его использовал во времена Windows2003/XP. Очень надежная
и нетребовательная штука.

Они не подходят, т.к. сервером является тот, кем надо управлять, а он за NAT`ом, т.е. без проброски порта туда не прорваться.
Собственно в этом основная проблема: юзер, к кому надо подключиться, должен выполнить для настройки сложные действия, значительно превышающие его ИТ-квалификацию.

Архитектурно твоя задача звучит как автоматизация проброски UDP за NAT. И я думаю что надо почитать в этом направлении.
Может тебе не надо разрабатывать свой удленный десктоп.
22 фев 19, 11:55    [21817167]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
exp98
Member

Откуда:
Сообщений: 1609
mayton
Последние сорцы тут и тут.
html.zip (14-Feb-2019)
public_html.zip (20-Feb-2019)
Других и не загружал. Повторяю их различие. Более ранняя версия ожидает на входе собелённый файл. Версия от 20 фев. предполагает, что файл цветной либо полутоновый, и поэтому сперва выводит на экран его. Затем выделяет в нём края с маской (-1 4 -1) и дальше работает уже с этим изображением.
mayton
Версия от 20-Feb не работает. В общем, ничего не рисует.
mayton, Вы как ребёнок (что удивительно). Когда "не работало" у меня, то хотя бы левое изображение выводилось, а правое было в ч/б цвете. Использование другого брра вопрос решило. Но это же не Ваш случай.

Вы дали мне заготовку с выводами в консоль. Вы хотя бы в консоль заглянули? до finish добралось? Я думаю, что завершилось на onload.
Вы прекрасно знаете, где искать строку с именем файла-картинки. Такой файл есть в том же каталоге? я думаю, что нет.
22 фев 19, 19:27    [21817590]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
exp98
Member

Откуда:
Сообщений: 1609
Рекламное изображение с сегментацией дисторшнутого факса (был, кто ещё помнит такой).
Извините уж, там 800х600, меньше некуда.

К сообщению приложен файл. Размер - 15Kb
5 мар 19, 14:56    [21825445]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
exp98
Member

Откуда:
Сообщений: 1609
И оставлю , пожалуй, остальные картинки и псевдокод, МЛ-ный вариант.
Выполняется отдельно для исходного и транспонированного изобр-я.
Варант автоматический (файл только задать надо, а потом сохранить картинки).
+
%%function runCAV_Vsections(sfile, sext)
%%%%%% Запускать как ф-цию:  clear all;close all; runCAV_Vsections('sfile', 'sext');

%%%%%% Запускать как m-file:
%% clear all;close all; sfile= 'c:\tmp\mix\ImgSampls\Fax-distor\fax1_distor.png'; sext= 'png';
    %%%%[A, map]= imread('c:\tmp\mix\Oval2\public_html\coins.png', 'png');
    %%%% B= single(255*edge(rgb2gray(A), 'sobel')); 

%% Загрузить и обработать рисунок
if strcmp( sext, 'bmp') || strcmp( sext, 'jpg') || strcmp( sext, 'png')
    [A, map]= imread(sfile, sext);
else
    fprintf(1, 'ERROR: Неизвестный тип файла: %s\n', sext);  return;  %% 1=stdout
end;
if length(size(A)) == 3
    %%C= A( (1:size(A,2)), (1:size(A,1)), (1:size(A,3)) ); A=[]; A= C;
    CVA= cov( single(rgb2gray(A)) ); 
else
    %%C= A((1:size(A,2)), (1:size(A,1))); A=[]; A= C;
    CVA= cov( single(ind2gray(A,map)) );
end;
  %%Gr= single(rgb2gray(A)); C=[Gr; zeros(1024-768, 1024)]; CVA=C;


%% Сгладить стат. характ-ки
h=15; dm=[]; dd=[];
dm=[]; p=length(diag(CVA)); for k=2:(p-1) if k<=h  hk=k-1; elseif k<=p-h hk=h; else hk=p-k; end;  dm(k)= sqrt(mean( reshape(CVA((k-hk):(k+hk), (k-hk):(k+hk)), length([(k-hk):(k+hk)])^2, 1) )); end;
dd=[]; p=length(diag(CVA)); for k=2:(p-1) if k<=h  hk=k-1; elseif k<=p-h hk=h; else hk=p-k; end;  dd(k)= sqrt(std(  reshape(CVA((k-hk):(k+hk), (k-hk):(k+hk)), length([(k-hk):(k+hk)])^2, 1) )); end;
t=0.15; my= dd*(1-t) + dm*(1+t); %%smooth( dd, 3,'rloess');
sb= edge(my, 'sobel', 1, 'vertical'); 
ind=[];nums=[]; ind= find(sb==1); nums= ind; %%nums()=nums();
clear nc; nc(1)=nums(1); cnt=1; bh=true; nc0=nums(1); for k= 2:length(nums)  if nums(k)-nc0>2*h+1  nc(cnt+1)= nums(k); cnt=cnt+1; bh=false; nc0=nums(k);  else if bh==false  nc0=nums(k-1); bh=true; end;  nc(cnt)= (nc0 + nums(k))/2; end;  end;


%% Принудительно притянуть крайние границы к краю рисунка
dln=length(nc); x= nc(1); y= nc(end); dh= h; %% h/2
if dln>2 
    nc(2:(end-1))= nc(2:(end-1)); 
    if (x < dh)  nc(1)= 1; end;
    if  (abs(y-size(CVA,2))< dh)  nc(end)= size(CVA,2); end;  
else
    nc(1)=max([x-dh, 1]); nc(end)= max([y-dh, 1]);
end;
clear dln, clear dh, clear x, clear y;


%% Рисовать
figure(2); imshow(CVA, []);
figure, plot([dm.' dd.' my.']); 
for k= 1:length(nc)  line( [nc(k) nc(k)], [1  max(my)] ,'LineWidth',1,'Color','green'); end;
figure, plot( sb);

figure, imshow(A,[]); for k= 1:length(nc)  line( [nc(k) nc(k)], [1  size(A,1)] ,'LineWidth',1,'Color','green'); end;
figure(2),            for k= 1:length(nc)  line( [nc(k) nc(k)], [1  size(CVA,1)] ,'LineWidth',1,'Color','green'); end;
S= edge(CVA, 'sobel'); figure, imshow(S, []);

Модератор: Просьба код форматированный давать. Убрал под спойлер чтобы разметку страницы не рвало


К сообщению приложен файл (Fax-distor.zip - 125Kb) cкачать
5 мар 19, 16:00    [21825509]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
mayton
Member

Откуда: loopback
Сообщений: 39224
Мне кажется что бочка - это не наш кейс.

Я бы в топике ее не рассматривал особо.
5 мар 19, 17:34    [21825629]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
exp98
Member

Откуда:
Сообщений: 1609
Я высказывал скепсис распознаванию как методу сжатия без потерь. Мой интерес просто в самом отделении текста от графики. А Ваш случай специфицирован достаточно расплывчато.
Даже книги могут быть похожи на этот. Книги могут иметь иллюстрации, посреди текста.
Книги по программизму чаще содержат большие вставки скринов. Скрин - часто есть смесь текста с графикой. Среди 6 вариантов, рассмотренных мною, есть и 2 таких скрина.

Кроме того это тоже пробный метод и без привлечения хафа. Просто у меня получился замкнутый круг. Чтобы повернуть лист, нужен хаф, но в скринах хаф сам по себе не отличит все рамки окна от текста, нужно распознавать графику. Круг замкнулся.

И только боле мене искусственный вариант - да и тот может давать сбои. Во вложении.

В инете рекламируют SWT. Достаточно друдоёмко для факультативной работы.

К сообщению приложен файл (Mior-2_2-5.zip - 127Kb) cкачать
5 мар 19, 18:27    [21825678]     Ответить | Цитировать Сообщить модератору
 Re: Четверговый архивариус  [new]
mayton
Member

Откуда: loopback
Сообщений: 39224
Тема топика задана. Архивация.
5 мар 19, 20:24    [21825744]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: 1 2 3 4 5 6 7 8      [все]
Все форумы / Программирование Ответить