Фотофильтр

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

Модератор: BV

Proxy
Профессор VB наук
Профессор VB наук
Аватара пользователя
 
Сообщения: 2941
Зарегистрирован: 31.08.2007 (Пт) 4:41

Фотофильтр

Сообщение Proxy » 18.01.2011 (Вт) 0:12

Вспоминал как пользоваться Activex, размял пальцы... или мозг. И вот, встречайте, это как бы графический редактор, но скорее даже корректор фотографий, планируется как вспомогательный инструмент. Всё что он умеет на данный момент: корректировать гамму. Позже планирую ещё добавить различные анализаторы (фотогистограмма и т.п.), различные эффекты вроде размытия, повороты/отражения изображения, изменение размера, просмотр каталогов, открытие файлов и т.д. Но пока только коррекция цвета и на мой взгляд довольно не тормозная.
У вас нет доступа для просмотра вложений в этом сообщении.
Follow the white rabbit.

Joo
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 762
Зарегистрирован: 14.08.2008 (Чт) 11:55
Откуда: Казахстан

Re: Фотофильтр

Сообщение Joo » 18.01.2011 (Вт) 6:10

Неплохо! Развивай дальше, может действительно полезный инструмент получится.
"Им будет не просто, тем кто полагается на истину авторитета, вместо того чтобы полагаться на авторитет Истины"
Джеральд Месси, Египтолог

Proxy
Профессор VB наук
Профессор VB наук
Аватара пользователя
 
Сообщения: 2941
Зарегистрирован: 31.08.2007 (Пт) 4:41

Re: Фотофильтр

Сообщение Proxy » 18.01.2011 (Вт) 12:55

Через что лучше всего реализовать Zoom? Необходимо, чтобы скорость была приемлемой, качество представляемой пользователю картинки не отличалось сильно от оригинала в буфере (антиалиасинг при увеличении, умное уменьшение) и ещё что-то придумать, чтобы при увеличении хай рез картинок никаких переполнений не возникало. Склоняюсь к тому, что оптимально было бы из буфера изображение увеличивать не полностью в бокс, отображаемый на экране, а сделать бокс фиксированного размера и в него уже преобразовывать только видимую часть. Но тогда потребуется чтобы масштабирование было очень скоростным, чтобы при скроллинге не ощущались задержки на масштабирование при каждом шаге (или же организовать ещё промежуточный буфер в роли кэша масштабированного изображения, но это слишком усложнит код).
Какой подход к масштабированию наиболее оптимален? Или ну его в топку, это масштабирование?
ЗЫ. Ещё есть идея организовать масштабирование через отдельный инструмент. Вроде лупы, в отдельном окне отображать увеличенное/уменьшенное изображение. Будет ли это удобно?

UPD: полазил по форуму, нашёл пример, но что-то он медленный какой-то.
Follow the white rabbit.

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: Фотофильтр

Сообщение Mikle » 18.01.2011 (Вт) 16:34

Proxy писал(а):нашёл пример, но что-то он медленный какой-то.

Это тот редкий случай, когда для скорости лучше применить не бейсик. Сам алгоритм там быстрый, вряд ли удастся сильно оптимизировать. Могу дать этот же пример, переведенный на C++, точнее саму функцию Resize.

Proxy
Профессор VB наук
Профессор VB наук
Аватара пользователя
 
Сообщения: 2941
Зарегистрирован: 31.08.2007 (Пт) 4:41

Re: Фотофильтр

Сообщение Proxy » 18.01.2011 (Вт) 17:31

Эммм. Знаю тогда как поступлю, сделаю ресайз DLL, чтобы потом можно было более шуструю либу подключить.
Follow the white rabbit.

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: Фотофильтр

Сообщение Mikle » 18.01.2011 (Вт) 21:31

Proxy писал(а):сделаю ресайз DLL

Лучше сразу FX.dll, может ещё что-нибудь добавишь потом в неё.
Код:
Код: Выделить всё
void RESIZE(unsigned char* src, unsigned char* dest, int ws, int hs, int wd, int hd)
{
int xx, yy;
int x, y;
int ixx, iyy;
int ix, iy;
int cx, cy;
int cxy, cc;
int pin, pout, p;
int b, g, r, a;
int *ikx, *iky;
int *kx, *ky;

cx = (ws - 1) / wd + 2;
cy = (hs - 1) / hd + 2;
x = cx * wd;
y = cy * hd;

ikx = (int *)_alloca(x * 4);
iky = (int *)_alloca(y * 4);
kx = (int *)_alloca(x * 4);
ky = (int *)_alloca(y * 4);

for (xx = 0; xx < x; xx++)
{
   ikx[xx] = 0;
   kx[xx] = 0;
}

for (yy = 0; yy < y; yy++)
{
   iky[yy] = 0;
   ky[yy] = 0;
}

if (ws >= wd)
{
   cxy = ws;
   pin = 0; pout = 1; p = 0;
   for(;;)
   {
     cc = pout * ws - pin * wd;
     if (cc >= wd)
     {
       kx[p] = wd;
     }
     else
     {
       kx[p] = cc;
       ikx[p] = pin;
       p = pout * cx;
       pout += 1;
       kx[p] = wd - cc;
     }
     ikx[p] = pin;
     pin += 1;
     if (pin >= ws) break;
     p += 1;
   }
}
else
{
   cxy = wd;
   for (x = 0; x < wd; x++)
   {
     p = x * 2;
     kx[p + 1] = x * (ws - 1) % (wd - 1);
     ikx[p] = x * (ws - 1) / (wd - 1);
     kx[p] = wd - kx[p + 1];
     ikx[p + 1] = (ikx[p] + 1) % ws;
   }
}

if (hs >= hd)
{
   cxy *= hs;
   pin = 0; pout = 1; p = 0;
   for(;;)
   {
     cc = pout * hs - pin * hd;
     if (cc >= hd)
     {
       ky[p] = hd;
     }
     else
     {
       ky[p] = cc;
       iky[p] = pin;
       p = pout * cy;
       pout += 1;
       ky[p] = hd - cc;
     }
     iky[p] = pin;
     pin += 1;
     if (pin >= hs) break;
     p += 1;
   }
}
else
{
   cxy *= hd;
   for (y = 0; y < hd; y++)
   {
     p = y * 2;
     ky[p + 1] = y * (hs - 1) % (hd - 1);
     iky[p] = y * (hs - 1) / (hd - 1);
     ky[p] = hd - ky[p + 1];
     iky[p + 1] = (iky[p] + 1) % hs;
   }
}

iyy = 0;
for (yy = 0; yy < hd; yy++)
{
   ixx = 0;
   for (xx = 0; xx < wd; xx++)
   {
     b = g = r = a = 0;
     iy = iyy;
     for (y = 1; y <= cy; y++)
     {
       ix = ixx;
       for (x = 1; x <= cx; x++)
       {
         b += src[(ikx[ix] + iky[iy] * ws) * 4 + 0] * kx[ix] * ky[iy];
         g += src[(ikx[ix] + iky[iy] * ws) * 4 + 1] * kx[ix] * ky[iy];
         r += src[(ikx[ix] + iky[iy] * ws) * 4 + 2] * kx[ix] * ky[iy];
         a += src[(ikx[ix] + iky[iy] * ws) * 4 + 3] * kx[ix] * ky[iy];
         ix += 1;
       }
       iy += 1;
     }
     dest[(xx + yy * wd) * 4 + 0] = b / cxy;
     dest[(xx + yy * wd) * 4 + 1] = g / cxy;
     dest[(xx + yy * wd) * 4 + 2] = r / cxy;
     dest[(xx + yy * wd) * 4 + 3] = a / cxy;
     ixx += cx;
   }
   iyy += cy;
}
return;
}

*src - указатель на массив источник, *dest - указатель на массив приёмник.
ws, hs - ширина и высота изображения в массиве источнике.
wd, hd - то же для массива приёмника.
Сам этим регулярно пользуюсь. Можешь просто взять SR2D.DLL и задекларировать эту ф-цию прямо оттуда.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Фотофильтр

Сообщение Хакер » 18.01.2011 (Вт) 22:04

MIkle, тебе надо сменить звание на «Обфускатор» ;)
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

BV
Thinker
Thinker
Аватара пользователя
 
Сообщения: 3987
Зарегистрирован: 12.09.2004 (Вс) 0:55
Откуда: Молдавия, г. Кишинёв

Re: Фотофильтр

Сообщение BV » 19.01.2011 (Ср) 0:23

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

Погоди! Ишь как разогнался :) Я тебе предлагаю две вещи:
1. Продолжить развивать мой проект FCOL на PowerBasic: viewtopic.php?f=15&t=24078&start=30
2. Внести свой вклад в Open Source-проект на C++, GraphicsDemo: http://code.google.com/p/graphicsdemo-open/
Mikle писал(а):Могу дать этот же пример, переведенный на C++, точнее саму функцию Resize.

Я хотел её переписать в GraphicsDemo, но терпения моего на твои сокращения не хватило, и я написал собственный простой вариант, без интерполяции, но зато читаемый :)
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: Фотофильтр

Сообщение Mikle » 19.01.2011 (Ср) 9:22

Хакер писал(а):тебе надо сменить звание на «Обфускатор»

Кроме отсутствия коментариев, к коду есть претензии?
BV писал(а):Я хотел её переписать в GraphicsDemo, но терпения моего на твои сокращения не хватило

Ооо... а если просто скопипастить и скомпилировать? Чем эта ф-ция отличается от тех же API ф-ций, которые ты используешь, не разбираясь в их внутреннем устройстве?

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Фотофильтр

Сообщение Хакер » 19.01.2011 (Ср) 9:36

Mikle писал(а):Кроме отсутствия коментариев, к коду есть претензии?

На комментарии (их отсутствие) я не обращал меня. Меня (и кого-то ещё, не помню кого) забавляют названия переменных, что в этот раз, что в тот раз (твоя 4k-демка).
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: Фотофильтр

Сообщение Mikle » 19.01.2011 (Ср) 10:20


offtop
Тут все имена для меня названы оправдано, я когда писал, не очень рассчитывал этим кодом делиться. У меня есть выработанная система, которой я пользуюсь:
x, y - это понятно.
xx, yy - те же "x, y", когда требуется повторная вложенность цикла.
ix, iy - индексы по "x, y"
и так далее, чем "локальнее" переменная - тем короче имя.
А 4к демо - особый случай. Я думал переделать на VBS, а там длина имени влияет на длину программы, да так и не переделал, а имена уже попортил, не сохранив (случайно) копию. Так как всё уже было готово, восстанавливать не стал.
Посмотри, к примеру, имена в SR2D, только не внутренние в классе, а его "интерфейс" - это пример того, как я именую, когда пишу "для людей".

Proxy
Профессор VB наук
Профессор VB наук
Аватара пользователя
 
Сообщения: 2941
Зарегистрирован: 31.08.2007 (Пт) 4:41

Re: Фотофильтр

Сообщение Proxy » 19.01.2011 (Ср) 12:53

Итак: пока не был выбран алгоритм масштабирования (поэтому пока никакого антиалиасинга, но уже есть собственная задумка), но кое-что добавлено/исправлено. И встретил кое-какие препятствия, из-за которых (возможно) придётся переписать солидную часть кода. Проблема в том, что изначально на изменение масштаба я вообще не рассчитывал, потом всё же решил, что масштабирование необходимо, но главная форма в изначальном состоянии двигает picturebox полностью при скролинге (т.е. имеет picturebox в размер масштабированной картинки), а это неверный подход, т.к. при увеличении фото (9 384px × 2 126px) вышел фейл с размерами picturebox (оригинал и так не мал, а после увеличения в 5 раз... фейл). Однако если считать разумным иной подход (без полного масштабированного изображения), то придётся организовать кэширование масштабированных областей изображения и немного усложнить работу скроллбаров. И вот тут действительно требования к скорости к алгоритму масштабирования будут критичными. Но это после... А пока так.
ЗЫ. увеличение фото 9 384px × 2 126px чужой вьювер осилил, хотя довольно тормозно.
ЗЗЫ. Неплохо было бы сделать скроллбары и кнопки полупрозрачными (а под ними изображение при увеличении), забавно было бы. Но это тоже после.
У вас нет доступа для просмотра вложений в этом сообщении.
Follow the white rabbit.

Joo
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 762
Зарегистрирован: 14.08.2008 (Чт) 11:55
Откуда: Казахстан

Re: Фотофильтр

Сообщение Joo » 19.01.2011 (Ср) 13:55

Слушай, забацай кнопку открыть...
"Им будет не просто, тем кто полагается на истину авторитета, вместо того чтобы полагаться на авторитет Истины"
Джеральд Месси, Египтолог

Proxy
Профессор VB наук
Профессор VB наук
Аватара пользователя
 
Сообщения: 2941
Зарегистрирован: 31.08.2007 (Пт) 4:41

Re: Фотофильтр

Сообщение Proxy » 19.01.2011 (Ср) 18:37

Снова добавил кое-что, теперь как-то более-менее уже походит на то, что планировал. Но ещё очень многое не сделано.

Огромная просьба выложить картинку, от которой анализатор давится. Говорят скриншоты (1024х600) не все желает принимать
сообщение при ошибке (предположительно):
AppName: photopf.exe AppVer: 0.0.0.11 ModName: photopf.exe
ModVer: 0.0.0.11 Offset: 00019cf2

У меня самого ни разу не получилось уронить. Ума не приложу что может быть не так, хотелось бы самому увидеть (а для этого нужна картинка), тогда исправлю.
У вас нет доступа для просмотра вложений в этом сообщении.
Последний раз редактировалось Anonymous 19.01.2011 (Ср) 19:27, всего редактировалось 1 раз.
Follow the white rabbit.

BV
Thinker
Thinker
Аватара пользователя
 
Сообщения: 3987
Зарегистрирован: 12.09.2004 (Вс) 0:55
Откуда: Молдавия, г. Кишинёв

Re: Фотофильтр

Сообщение BV » 19.01.2011 (Ср) 19:27

Mikle писал(а):а если просто скопипастить и скомпилировать?

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

Proxy, ты пропустил мой пост?
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;

Proxy
Профессор VB наук
Профессор VB наук
Аватара пользователя
 
Сообщения: 2941
Зарегистрирован: 31.08.2007 (Пт) 4:41

Re: Фотофильтр

Сообщение Proxy » 19.01.2011 (Ср) 19:29

BV писал(а):Proxy, ты пропустил мой пост?

Не пропустил, просто хочу побыстрее это чудовище допинать, придать форму и функциональность. А потом постараюсь взяться за свою задумку, которую описывал в народном трёпе.

Получилось у кого-либо уронить приложение при анализе картинки как я постом выше описывал?
И вообще странно: "ModVer: 0.0.0.11" наверняка указывает на ревизию 11, притом я скидывал человеку для теста ревизию 14. О чём это может говорить? Может стоит забить пока на поиски бага? Или может у кого-то выйдет найти картинку, вызывающую баг?
Follow the white rabbit.

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: Фотофильтр

Сообщение Mikle » 19.01.2011 (Ср) 21:30

BV писал(а):Функция не переносима в проект без правок

Почему?
Там только добавить нужно, забыл сразу написать:
Код: Выделить всё
#include <malloc.h>

Proxy
Профессор VB наук
Профессор VB наук
Аватара пользователя
 
Сообщения: 2941
Зарегистрирован: 31.08.2007 (Пт) 4:41

Re: Фотофильтр

Сообщение Proxy » 19.01.2011 (Ср) 21:34

чуть новее версия
У вас нет доступа для просмотра вложений в этом сообщении.
Follow the white rabbit.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Фотофильтр

Сообщение Хакер » 20.01.2011 (Чт) 6:48

Mikle писал(а):
BV писал(а):Функция не переносима в проект без правок

Почему?
Там только добавить нужно, забыл сразу написать:
Код: Выделить всё
#include <malloc.h>

Афаик, надо stdlib, malloc упраздняется.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

BV
Thinker
Thinker
Аватара пользователя
 
Сообщения: 3987
Зарегистрирован: 12.09.2004 (Вс) 0:55
Откуда: Молдавия, г. Кишинёв

Re: Фотофильтр

Сообщение BV » 21.01.2011 (Пт) 17:11

Proxy писал(а):Не пропустил, просто хочу побыстрее это чудовище допинать, придать форму и функциональность. А потом постараюсь взяться за свою задумку, которую описывал в народном трёпе.

То есть, ты все равно хочешь изобрести велосипед, вместо того, что бы внести свой вклад в один из существующих проектов?
Mikle писал(а):Почему?

Потому что не соответствует структуре графического модуля
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;

Proxy
Профессор VB наук
Профессор VB наук
Аватара пользователя
 
Сообщения: 2941
Зарегистрирован: 31.08.2007 (Пт) 4:41

Re: Фотофильтр

Сообщение Proxy » 21.01.2011 (Пт) 17:23

BV писал(а):То есть, ты все равно хочешь изобрести велосипед, вместо того, что бы внести свой вклад в один из существующих проектов?

Именно так :D Пока довольно успешно, в меру свободного времени у велосипеда уже появляются очертания велосипеду присущие.
Follow the white rabbit.

Proxy
Профессор VB наук
Профессор VB наук
Аватара пользователя
 
Сообщения: 2941
Зарегистрирован: 31.08.2007 (Пт) 4:41

Re: Фотофильтр

Сообщение Proxy » 14.03.2011 (Пн) 19:17

Небольшая попытка сделать поддержку хайрез изображений (ранее нельзя было увеличить изображение, если оно имело большое разрешение + большие изображения масштабировались довольно не быстро + сложно было добавить антиалиасинг из-за того, что было необходимо преобразовывать всё изображение целиком, а не только видимую область).
Так же попытался сделать скроллинг более простым и удобным, не знаю всем ли понравится.
Все возможности фильтра и анализатора временно убраны, выкладываю только для проверки работоспособности нового подхода.
Приемлемо ли работает скроллинг или тормозно (рывками)? Если будет всё нормально с этим наброском, то верну все возможности; если нет, то буду ещё думать (или скорее займусь чем-нибудь полезным).
У вас нет доступа для просмотра вложений в этом сообщении.
Follow the white rabbit.

Proxy
Профессор VB наук
Профессор VB наук
Аватара пользователя
 
Сообщения: 2941
Зарегистрирован: 31.08.2007 (Пт) 4:41

Re: Фотофильтр

Сообщение Proxy » 15.03.2011 (Вт) 12:56

Интерфейс вьювера придуман и вьювер реализован (в таком виде и останется), осталось вернуть на место эффекты и анализ снимка.

ЗЫ. Процесс зачем-то ломится в сеть, пока не разобрался почему и для чего (в коде доступа в сеть нигде нет). Запретите на всякий случай, если у кого-то так же поведёт себя.
У вас нет доступа для просмотра вложений в этом сообщении.
Follow the white rabbit.

Proxy
Профессор VB наук
Профессор VB наук
Аватара пользователя
 
Сообщения: 2941
Зарегистрирован: 31.08.2007 (Пт) 4:41

Re: Фотофильтр

Сообщение Proxy » 16.03.2011 (Ср) 15:55

Возникла мысль добавить функционал для edge detection, возможность построения векторной графики (отдельный слой, единственный слой, доступный для редактирования) + экспорт слоя в SVG. Нужно ли или и дальше делать аналог IrfanView?
Хочу получить в итоге удобный инструмент для отрисовки, не вижу смысла в проекте иначе.
Follow the white rabbit.

Proxy
Профессор VB наук
Профессор VB наук
Аватара пользователя
 
Сообщения: 2941
Зарегистрирован: 31.08.2007 (Пт) 4:41

Re: Фотофильтр

Сообщение Proxy » 24.03.2011 (Чт) 19:23

Отказался от идеи копирования IrfanView, делаю инструмент для отрисовки (ну и вьювер за одно). Кое-что получается, что-то ещё нужно додумать, но пока без экспорта в SVG, возможности сохранения, построения самих кривых и т.д. Пока только для оценки работы с докерами, не знаю насколько удобно. И не знаю насколько корректно поместил эти пункты в меню Инструменты, но позже планирую продублировать в панель инструментов. Ну и теперь можно для удобства выделять границы и скрывать подложку.
У вас нет доступа для просмотра вложений в этом сообщении.
Follow the white rabbit.

Proxy
Профессор VB наук
Профессор VB наук
Аватара пользователя
 
Сообщения: 2941
Зарегистрирован: 31.08.2007 (Пт) 4:41

Re: Фотофильтр

Сообщение Proxy » 31.03.2011 (Чт) 21:23

Добавил работу со слоями, добавил отрезки (пока только прямые и только на активном слое прорисовываются, кривая Безье пока выглядит как прямая). Для построения "кривой" нажимаем ЛКМ на точке (инструменты > создание докеров), затем наводим курсор на вторую точку отрезка, затем отпускаем ЛКМ. Обе точки должны быть расположены на активном слое (вообще что-либо делать можно только на активном слое).
Базовое изображение (файл > открыть) слоем не считается (оно отключается через вид > подложка).
Строить фигуры можно и не открывая базовое изображение, но это не имеет смысла (позиционирую как инструмент для отрисовки) и "навигация" (скроллинг) не работает т.к. размеры холста не определены.
Между "+" и "-" (масштабирование) кнопка — она не совсем кнопка, она — ползунок (но пока это не очевидно). Да, справа и снизу тоже (чтобы увидеть нужно подвигать курсором по форме) и чтобы "вид" > "навигация" не было отключено.
Менеджер слоёв в "вид" > "слои"
Ну вроде пока всё.

UPD: При попытке открыть хайрез JPEG возникла ошибка "out of memory", сегодня нет времени разбираться что, как и где, позже (возможно) придётся избавляться от стандартных типов и методов, связанных с обработкой и хранением изображений и писать собственные (или искать работоспособные). Irfan View справился с открытием изображения (10200x14040 24bit JPEG 100%), но у него это заняло около 30 секунд (тоже не эталон).
У вас нет доступа для просмотра вложений в этом сообщении.
Последний раз редактировалось Anonymous 01.04.2011 (Пт) 14:09, всего редактировалось 1 раз.
Follow the white rabbit.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Фотофильтр

Сообщение Хакер » 01.04.2011 (Пт) 14:02

Прокси, расскажи, о чём речь. А то название отталкивающее, а сожержимое... местами проглядываются интересные слова.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Proxy
Профессор VB наук
Профессор VB наук
Аватара пользователя
 
Сообщения: 2941
Зарегистрирован: 31.08.2007 (Пт) 4:41

Re: Фотофильтр

Сообщение Proxy » 01.04.2011 (Пт) 14:16

Ну это в двух словах — инструмент для ручного преобразования растрового изображения в векторное (трассировщик). Открываешь изображение (подложка), выделяешь границы для удобства (edge detection), расставляешь точки на углах и обводишь те, которые считаешь нужным (кривые, полигоны и т.д), затем экспортируешь векторное изображение (пока не поддерживается импорт и экспорт). Ну в будущем планирую вспомогательно по-максимуму автоматизировать процесс (но не до такой степени, как в Adobe Flash). Пока это только набросок, ещё думаю как должен будет в конечном счёте выглядеть пользовательский интерфейс (чтобы было удобно), архитектура тоже ещё не до конца продумана (как оказалось). Ну у меня мало времени на это сейчас, поэтому так медленно и продвигается всё.
Follow the white rabbit.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Фотофильтр

Сообщение Хакер » 01.04.2011 (Пт) 14:19

О :)
Использовал мой алгоритм?
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Proxy
Профессор VB наук
Профессор VB наук
Аватара пользователя
 
Сообщения: 2941
Зарегистрирован: 31.08.2007 (Пт) 4:41

Re: Фотофильтр

Сообщение Proxy » 01.04.2011 (Пт) 18:47

Нет, вспомнил ещё со школы Edge detection один из самых примитивных реализаций алгоритма (есть ещё куча более удачных, но потом изучить и поменять не должно стать большой проблемой). Если ты про определение вершин по аналогии с тем постом, то это ещё только предстоит. Определение замкнутых контуров и нахождение вершин потребуются далее, пока не умеет.
Follow the white rabbit.

След.

Вернуться в Наши проекты

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 11

    TopList