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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Конвертация картинки в 1-бит. Аналог Corel Photo Paint... 
:(
    Опции темы
iddqd
Дата 8.6.2006, 09:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



В Corel Photo Paint есть такая функция:
Image->Color Mode-Black and White (1-bit)->Conversion: Stucki
Как мне использоваться эту возможность Корела из дельфи или может кто-нибудь знает алгоритм? 


--------------------
PM MAIL   Вверх
Snowy
Дата 8.6.2006, 09:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

Репутация: 18
Всего: 484



Не у всех есть Corel. Может пояснишь, что это:
Цитата(iddqd @  8.6.2006,  09:35 Найти цитируемый пост)
Conversion: Stucki

 
PM MAIL   Вверх
Romikgy
Дата 8.6.2006, 09:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

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



Если знаешь цвет каждой точки, то можно сделать так,
сумируем все 3 состовляющие цвета и делим на три, получается градация серого, 
далее елси больше половины от белого , то ставил 1 , меньше 0,
 допустим цвет : 0x800101
серый =( 0x80+0x1+0x1)/3= 0x82/3= 0x2b
ч/б = 0х2b > 0x7f ? 1 : 0 


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Snowy
Дата 8.6.2006, 10:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

Репутация: 18
Всего: 484



Тогда уж так:
Код
  bmp.PixelFormat := pf1bit;
 
PM MAIL   Вверх
iddqd
Дата 8.6.2006, 10:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(Snowy @  8.6.2006,  09:38 Найти цитируемый пост)
Не у всех есть Corel. Может пояснишь, что это:
Цитата(iddqd @  8.6.2006,  09:35 )    
Conversion: Stucki


Если бы я знал smile
это какой-то вид преобразования картинки. Подробности мне не известны.

Цитата(Snowy @  8.6.2006,  10:05 Найти цитируемый пост)
Тогда уж так:
код Pascal/Delphi    
1:    
  bmp.PixelFormat := pf1bit;


Результат значительно отличается от требуемого.

Цитата(Romikgy @  8.6.2006,  09:41 Найти цитируемый пост)
Если знаешь цвет каждой точки, то можно сделать так,
сумируем все 3 состовляющие цвета и делим на три, получается градация серого, 
далее елси больше половины от белого , то ставил 1 , меньше 0,
 допустим цвет : 0x800101
серый =( 0x80+0x1+0x1)/3= 0x82/3= 0x2b
ч/б = 0х2b > 0x7f ? 1 : 0 


Ты знаком с алгоритмом или это предположение?
Если первое, то можно немного подробней.
 


--------------------
PM MAIL   Вверх
drkot
Дата 8.6.2006, 11:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ищущий
***


Профиль
Группа: Завсегдатай
Сообщений: 1042
Регистрация: 5.5.2006

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



согласен с Snowy,  потому что алгоритм Romikgy однозначно ошибочен. Тама формула посложнее с коэфициентиками и пр. в зависимости от компоненты и их комбинаций (попробуй преобразовать в серый три картинки типа 255R:0G:0B;  0R:255G:0B; 0R:0G:255B; и посмотри что получится)

Добавлено @ 11:03 
Цитата(iddqd @  8.6.2006,  10:46 Найти цитируемый пост)
Результат значительно отличается от требуемого.

А ты уровнем 
Цитата(Romikgy @  8.6.2006,  09:41 Найти цитируемый пост)
ч/б = 0х2b > 0x7f ? 1 : 0

поварьируй.

Добавлено @ 11:05 
А лучше иди на торри там есть библиотеки по обработке изображений, там уже все реализовано, да и подсмотреть как делать можно. 


--------------------
Ошибка не становится истиной по причине широкого распространения,
как и Истина не становится Ошибкой из-за того, что никто её не видит.
PM   Вверх
Romikgy
Дата 8.6.2006, 11:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

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



Цитата(iddqd @  8.6.2006,  09:46 Найти цитируемый пост)
Ты знаком с алгоритмом

нет
Цитата(iddqd @  8.6.2006,  09:46 Найти цитируемый пост)
это предположение

да
возьми картинку любую , выложи здесь (только не сильно большую),
и сделай в
Цитата(iddqd @  8.6.2006,  08:35 Найти цитируемый пост)
В Corel Photo Paint есть такая функция:Image->Color Mode-Black and White (1-bit)->Conversion: Stucki

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

Добавлено @ 11:10 
Цитата(drkot @  8.6.2006,  10:01 Найти цитируемый пост)
попробуй преобразовать в серый три картинки типа 255R:0G:0B;  0R:255G:0B; 0R:0G:255B; и посмотри что получится

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


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
drkot
Дата 8.6.2006, 11:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ищущий
***


Профиль
Группа: Завсегдатай
Сообщений: 1042
Регистрация: 5.5.2006

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



Могу предложить простое решение (неправильное но творческое).
Создаеш в кореле лист с градиентной заливкой (примерно такого вида)
   R: 0..255 - первая полоса
   G: 0..255 - вторая полоса
   B: 0..255 - третья полоса
экспортируеш это счастье в бмп24 преобразуеш в 8бит и экспортируеш в бмп8, преобразуеш в 1бит и экспортируеш в бмп1. по полученым результатам можно составить алгоритм преобразования из цвета в монохром (причем алгоритм будет адекватен кореловскому)

Добавлено @ 11:21 
Цитата(Romikgy @  8.6.2006,  11:05 Найти цитируемый пост)
имхо разговор ведется о другом 

а по моему иенно об этом. почитай стандарт jpeg там какраз это и учтено.

берем два прототипа 50%G и 50%R, преобразуем в градации серого получаем 42,7% и 23,5% серого соотбетственно (это в цифре)
Цитата(Romikgy @  8.6.2006,  11:05 Найти цитируемый пост)
 а цифр имхо одинаковые

посему чситаю утверждение ложным.
 


--------------------
Ошибка не становится истиной по причине широкого распространения,
как и Истина не становится Ошибкой из-за того, что никто её не видит.
PM   Вверх
Romikgy
Дата 8.6.2006, 12:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

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



Цитата(drkot @  8.6.2006,  10:12 Найти цитируемый пост)
почитай стандарт jpeg

к какому боку это относится к теме????
Цитата(drkot @  8.6.2006,  10:12 Найти цитируемый пост)
берем два прототипа 50%G и 50%R, преобразуем в градации серого получаем 42,7% и 23,5% серого соотбетственно

Еще раз повторюсь все это считается исходя из параметров человеческого глаза! и используются эти коэф. 
В теме просят преобразовать в ч/б изображение , я представил один из вариантов его добывания, о чем ты споришь ???? 


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
drkot
Дата 8.6.2006, 12:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ищущий
***


Профиль
Группа: Завсегдатай
Сообщений: 1042
Регистрация: 5.5.2006

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



Цитата(Romikgy @  8.6.2006,  12:00 Найти цитируемый пост)
о чем ты споришь ???? 

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


--------------------
Ошибка не становится истиной по причине широкого распространения,
как и Истина не становится Ошибкой из-за того, что никто её не видит.
PM   Вверх
Romikgy
Дата 8.6.2006, 12:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

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



Цитата(iddqd @  8.6.2006,  08:35 Найти цитируемый пост)
В Corel Photo Paint есть такая функция:Image->Color Mode-Black and White (1-bit)->Conversion: Stucki

это спросили. его алгоритм!
Я у автора темы попросил
Цитата(Romikgy @  8.6.2006,  10:05 Найти цитируемый пост)
возьми картинку любую , выложи здесь (только не сильно большую),и сделай вЦитата(iddqd @  8.6.2006,  08:35 )В Corel Photo Paint есть такая функция:Image->Color Mode-Black and White (1-bit)->Conversion: Stuckiи выложи результат, имхо желательно в бмп формате, легче будет разбиратся с алгоритмом

его ответа пока не вижу smile
А всю эту димагогию разводить ...
Цитата(drkot @  8.6.2006,  11:04 Найти цитируемый пост)
чтоб на результат люди смотрели

имхо пускай автор отвечает!
Спорить с тобой
drkot, смысла не вижу! 


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Albinos_x
Дата 8.6.2006, 13:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Evil Skynet
****


Профиль
Группа: Комодератор
Сообщений: 3288
Регистрация: 28.5.2004
Где: X-6120400 Y-1 4624650

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



что-то вроде этого наверно:
Код
...
var c:tcolor;
      r,g,b:byte;
      i,j:Word;
begin
for i:=0 to Image2.Picture.Width do
 for j:=0 to Image2.Picture.Height do
  begin
  c:=Image2.Canvas.Pixels[i,j];
  r:=c mod 256;
  c:=c div 256;   // здесь можно ещё примнять операцию сдвига shr
  g:=c mod 256;
  b:=c div 256;
  c:=(r+g+b) div 3;
  if c<128 then c:=$FFFFFF else c:=$0;
  Image2.Canvas.Pixels[i,j]:=c;
  end;
...

если я правильно понял... 


--------------------
"Кто владеет информацией, тот владеет миром"    
Уинстон Черчилль
PM MAIL ICQ   Вверх
Mechanic
Дата 9.6.2006, 07:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 228
Регистрация: 5.5.2006
Где: Kharkov, Ukraine

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



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

Grey := 0.3 * R + 0.59 * G + 0.11 * B;

А потом уже можно по порогу:
Код

BW := integer(Grey>127);


А вообще, есть для B/W конвертинга масса методов. Есть ещё дитеринг. 
--------------------
Tell me the extensions of the files You backup and I'll tell You who You are..  ©Mch  
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Звук, графика и видео"
Girder
Snowy
Alexeis

Запрещено:

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

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

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

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


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

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


 




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


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

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