Модераторы: Snowy, Alexeis, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сделать серый цвет темнее 
:(
    Опции темы
Akella
  Дата 3.12.2013, 16:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 1
Всего: 329



Есть картинка (приложил к сообщению).
Движок распознавания (tesseract) иногда очень плохо распознает цифру 1, а также точку с запятой, я имею ввиду, что вообще не распознаёт. Ну и другие символы не всегда правильно. Может из 8 сделать 3 или 5.
Хотя другие картинки почти всегда правильно. Они чётче.
Я увеличиваю картинку в 3-4 раза и подсовываю движку распознавания.
Как бы мне сделать символы более чёткими, темнее?
Спасибо.

Присоединённый файл ( Кол-во скачиваний: 31 )
Присоединённый файл  260d8f0b5d24bb7fa9e6f26a5e881365.jpg 1,95 Kb
PM MAIL   Вверх
Агрох
Дата 3.12.2013, 17:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 176
Регистрация: 6.4.2013
Где: Москва

Репутация: нет
Всего: 6



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

Могу завтра (сейчас некогда) поискать исходники. Но сразу предупрежу они сделаны на компонентах UnDelphiX. Хотя думаю под обычный канвас алгоритм переделать легко.
--------------------
Putin here, Putin there, Putin almost everywhere!
PM MAIL   Вверх
Akella
Дата 3.12.2013, 17:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 1
Всего: 329



Цитата(Агрох @  3.12.2013,  17:27 Найти цитируемый пост)
они сделаны на компонентах UnDelphiX

не, спасибо
PM MAIL   Вверх
Illusion Dolphin
Дата 3.12.2013, 22:18 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1198
Регистрация: 3.5.2003

Репутация: 13
Всего: 63



Увеличьте контрастность
Код


procedure Contrast(Image: TBitmap; Value: Extended; Local: Boolean);

  function BLimit(B: Integer): Byte; inline;
  begin
    if B < 0 then
      Result := 0
    else if B > 255 then
      Result := 255
    else
      Result := B;
  end;

var
  Dest : pRGBTriple;
  x, y, mr, mg, mb,
    W, H, tr, tg, tb: Integer;
  vd: Double;

begin
 Image.PixelFormat := pf24bit;

 W := Image.Width - 1;
 H := Image.Height - 1;
  if Local then
  begin
    mR := 128;
    mG := 128;
    mB := 128;
  end else
  begin
    tr := 0;
    tg := 0;
    tb := 0;
    for y := 0 to H do
    begin
      Dest := Image.ScanLine[y];
      for x := 0 to W do
      begin
        with Dest^ do
        begin
          Inc(tb, Dest^.rgbtRed);
          Inc(tg, Dest^.rgbtGreen);
          Inc(tr, Dest^.rgbtBlue);
        end;
        Inc(Dest);
      end;
    end;
    mB := Trunc(tb / (W * H));
    mG := Trunc(tg / (W * H));
    mR := Trunc(tr / (W * H));
  end;
  if Value > 0 then
    vd := 1 + (Value / 10)
  else
    vd := 1 - (Sqrt(-Value) / 10);
  for y := 0 to H do
  begin
    Dest := Image.ScanLine[y];
    for x := 0 to W do
    begin
      with Dest^ do
      begin
        rgbtRed := BLimit(mB + Trunc((rgbtRed - mB) * vd));
        rgbtGreen := BLimit(mG + Trunc((rgbtGreen - mG) * vd));
        rgbtBlue := BLimit(mR + Trunc((rgbtBlue - mR) * vd));
      end;
      Inc(Dest);
    end;
  end;
end;



--------------------
В мире всего две бесконечности: вселенная и человеческая глупость... На счёт вселенной я не уверен.
Шифрование и организация фотографий - Photo Database 4.5
PM MAIL WWW ICQ   Вверх
Alexeis
Дата 4.12.2013, 08:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 55
Всего: 459



Чтобы увеличить яркость, по хорошему цвета из RGB нужно перевести в HSV схему http://ru.wikipedia.org/wiki/HSV_(%D1%86%D...B5%D0%BB%D1%8C)

В ней последний параметр яркость. Добавляем яркости и обратно в RGB конвертим.


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Alexeis
Дата 4.12.2013, 09:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 55
Всего: 459



Akella, попробуй еще фильтр фотошопа unsharp mask . Он вроде как улучшается края как раз. 


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Akella
  Дата 4.12.2013, 09:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 1
Всего: 329



А если нет на ПК фотошопа?


Illusion Dolphin, пасиб, попробую.
Получает, что JPG или PNG нужно конвертнуть в BMP, увеличить контрастность, а затем обратно в PNG? Качество не потеряется?

Добавлено через 4 минуты и 55 секунд
Цитата(Illusion Dolphin @  3.12.2013,  22:18 Найти цитируемый пост)
procedure Contrast(Image: TBitmap; Value: Extended; Local: Boolean);


ещё вопрос, что такое Value и Local, и как их применять?
PM MAIL   Вверх
Агрох
Дата 4.12.2013, 10:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 176
Регистрация: 6.4.2013
Где: Москва

Репутация: нет
Всего: 6



Цитата(Akella @  3.12.2013,  18:38 Найти цитируемый пост)
Цитата(Агрох @  3.12.2013,  17:27 )
они сделаны на компонентах UnDelphiX

не, спасибо 


Какое предвзятое мнение, как о новичках на форуме, так и о незнакомых компонентах.

Там через UnDelphiX только вывод на экран. Обработка пикселей через Canvas.Pixels[x, y], выделение rgb составляющих пикселя и их анализ.
--------------------
Putin here, Putin there, Putin almost everywhere!
PM MAIL   Вверх
Alexeis
Дата 4.12.2013, 10:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 55
Всего: 459



Цитата(Akella @  4.12.2013,  10:57 Найти цитируемый пост)
Получает, что JPG или PNG нужно конвертнуть в BMP, увеличить контрастность, а затем обратно в PNG? Качество не потеряется?

  Жпег плохо использовать для текста, потому что как раз жпег больше других форматов портит края текста, контуров и вообще любых чертежей. PNG формат без потерь, так что PNG<->BMP не приведет к ухудшению качества.

Цитата(Akella @  4.12.2013,  10:57 Найти цитируемый пост)
А если нет на ПК фотошопа?

Этот фильтр есть в Гимпе. Программно это реализуется с помощью гаусова размытия + дополнительные арифметические операции. Вот кстати описание этого фильтра и описание как его реализовать http://docs.gimp.org/en/plug-in-unsharp-mask.html . Фильтры гауса несложно найти в интернете готовую реализацию, а вычитать и складывать цвета пикселов, думаю ты осилишь smile .

Добавлено через 1 минуту и 55 секунд
Да чо уж там в интернетах, у нас на форуме есть реализация gaussian blur http://forum.vingrad.ru/faq/topic-157073.html


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Агрох
Дата 4.12.2013, 10:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 176
Регистрация: 6.4.2013
Где: Москва

Репутация: нет
Всего: 6



Да, получилось немного не так, как думал.
Файл после обработки прикреплён к ответу.

Если нужны исходники, прикреплю. Без UnDelphiX.
Прога работает с jpg. Т.е. открывает их, но потом загружает файл в TImage и с ним уже работает. Сохраняет тоже в Jpg.

Это сообщение отредактировал(а) Агрох - 4.12.2013, 11:45

Присоединённый файл ( Кол-во скачиваний: 13 )
Присоединённый файл  1.jpg 2,94 Kb
--------------------
Putin here, Putin there, Putin almost everywhere!
PM MAIL   Вверх
Akella
Дата 4.12.2013, 11:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 1
Всего: 329



Цитата(Alexeis @  4.12.2013,  10:35 Найти цитируемый пост)
 Жпег плохо использовать для текста, потому что как раз жпег больше других форматов портит края текста, контуров и вообще любых чертежей. PNG формат без потерь, так что PNG<->BMP не приведет к ухудшению качества.


ок, понял

Добавлено через 56 секунд
Цитата(Агрох @  4.12.2013,  10:06 Найти цитируемый пост)
Какое предвзятое мнение, как о новичках на форуме, так и о незнакомых компонентах.


при чём здесь мнение, если я просто не хочу использовать сторонние компоненты только из-за 1-2 процедур или функций, не вижу смысла пока что

Добавлено через 2 минуты и 10 секунд
Цитата(Alexeis @  4.12.2013,  10:35 Найти цитируемый пост)
Этот фильтр есть в Гимпе. 

таскать с собой гимп и фильтр?
зачем, если Illusion Dolphin дал готовый вариант
вариант этот работает, текст становится темнее, распознавание улучшилось, это факт

Добавлено через 2 минуты и 50 секунд
Цитата(Агрох @  4.12.2013,  10:38 Найти цитируемый пост)
Файл после обработки прикреплён к ответу. 

у меня так же получается smile 
PM MAIL   Вверх
Агрох
Дата 4.12.2013, 11:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 176
Регистрация: 6.4.2013
Где: Москва

Репутация: нет
Всего: 6



Цитата(Akella @  4.12.2013,  12:44 Найти цитируемый пост)
при чём здесь мнение, если я просто не хочу использовать сторонние компоненты только из-за 1-2 процедур или функций, не вижу смысла пока что


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

Нашёл исходники и адаптировал их под TImage, без UNDelphiX. Хотя там и так через Canvas всё делалось. Пример результата работы можно посмотреть выше. Могу выложить исходники.
--------------------
Putin here, Putin there, Putin almost everywhere!
PM MAIL   Вверх
Alexeis
Дата 4.12.2013, 15:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 55
Всего: 459



Цитата(Akella @  4.12.2013,  12:44 Найти цитируемый пост)
таскать с собой гимп и фильтр?
зачем, если Illusion Dolphin дал готовый вариант
вариант этот работает, текст становится темнее, распознавание улучшилось, это факт

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


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Akella
  Дата 4.12.2013, 15:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 1
Всего: 329



цифры распознаются в принципе нормально, увеличиваю картинку в три раза и норма, но такие мелочи, как точка и запятая, а также точка запятой.... не очень,
примерно в 30% случаев не распознается
PM MAIL   Вверх
PointerToNil
Дата 5.12.2013, 17:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



*


Профиль
Группа: Участник
Сообщений: 108
Регистрация: 17.6.2013

Репутация: нет
Всего: 6



если нужно сделать темнее:
Код

real_c := c / 255; // диапазон 0..255 -> 0..1
new_real_c := real_с * real_c; // уменьшаем гамму (сильно)
factor := 0.5; // если нужно не так сильно, то смешаем со старым значением: 
new_real_c := new_real_c * factor + real_c * (1 - factor); // factor ближе к 1 - сильнее
new_с := round( new_real_c * 255 ); // диапазон обратно -> 0..255
и так - с каждой из компонент цвета (r, g, b) каждой точки
(подразумевалась под "c" и "new_c")

если контрастнее - немного иначе:
Код

real_c := c * 2 / 255 - 1; // диапазон 0..255 -> -1..1
if real_c >= 0 then
  new_real_c := sqrt(real_с) // для яркой половины цветов "диапазонную гамму" увеличиваем 
else
  new_real_c := -sqrt(-real_c); // для темной - уменьшаем
factor := 0.5; // если нужно не так сильно, то смешаем со старым значением: 
new_real_c := new_real_c * factor + real_c * (1 - factor); // factor ближе к 1 - сильнее
new_с := round( (new_real_c + 1) * 255 / 2 ); // диапазон обратно -> 0..255
(код не тестировал)

Это сообщение отредактировал(а) PointerToNil - 5.12.2013, 17:48
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Звук, графика и видео"
Girder
Snowy
Alexeis

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • По вопросам разработки игр стоит заглянуть сюда

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Girder, Snowy.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Звук, графика и видео | Следующая тема »


 




[ Время генерации скрипта: 0.0621 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.