Форум: "Основная";
Текущий архив: 2006.04.09;
Скачать: [xml.tar.bz2];
ВнизОбработка изображения. Метод. Найти похожие ветки
← →
Andy BitOff © (2006-03-02 17:54) [0]Посоветуйте, какой лучше использовать метод обраотки.
Алгоритм накидал, но вот способ... Вообщем, предстоит ОЧЕНЬ большая обработка двух битмапов с выводом результатов в третий. Придется скакать по пикселям исходных двух во всех направлениях. Я обдумывал несколько вариантов.
Можно перегнать битмапы в массивы. Достоинство: можно получать доступ к пикселям как Массив[x,y]- удобно.
Можно создать массивы указателей на горизонтальные линии (ScanLine). Менее удобный доступ.
Ну и использовать непосредственно ScanLine и прыгать туда сюда. Это мне вообще не нравится.
Может еще какие варианты есть?
Максимально важна скорость.
← →
TUser © (2006-03-02 18:19) [1]Я за массив сканлайнов.
← →
Crash Coredump © (2006-03-02 18:22) [2]GetDIBits ?
← →
MBo © (2006-03-02 18:24) [3]http://www.delphimaster.ru/articles/pixels/index.html
← →
StriderMan © (2006-03-02 21:13) [4]не надо никуда копировать!
TBitMap.Canvas.Pixels[x,y]
← →
GrayFace © (2006-03-03 10:21) [5]Могу дать измененную версию http://www.delphimaster.ru/articles/pixels/index.html - исправлено несколько багов, скорость чуть побольше и еще некоторые усовершенствования.
> StriderMan © (02.03.06 21:13) [4]
> не надо никуда копировать!
>
> TBitMap.Canvas.Pixels[x,y]
Перечитай в сабже почледнее предложение.
← →
Andy BitOff © (2006-03-03 11:28) [6]StriderMan © (02.03.06 21:13) [4]
Смешно =)
← →
Andy BitOff © (2006-03-03 11:31) [7]GrayFace © (03.03.06 10:21) [5]
Конечно надо, т.к. я уже начал с ней работать. Если принципиальных изменений не вненесно, то ладно, а иначе переписывать придется ;)
Жду ссылочку.
← →
Amoeba © (2006-03-03 11:49) [8]Если важна скорость или хотя бы обрабатывается большое кол-во пикселей, то ни в коем случае не использовать св-во Pixsels, иначе хорошие тормоза будут обеспечены.
← →
StriderMan © (2006-03-03 12:10) [9]
> Если важна скорость или хотя бы обрабатывается большое кол-
> во пикселей, то ни в коем случае не использовать св-во Pixsels,
> иначе хорошие тормоза будут обеспечены.
посмотрел исходники TCanvas
GetPixel := Windows.GetPixel(FHandle, X, Y);
чутье подсказывает что API не очень быстро это дело отработает, так что признаю Вашу правоту
но копирование всех точек в массив тоже не быстрая операция, да еще и памяти порядочно займет
← →
Andy BitOff © (2006-03-03 12:55) [10]
StriderMan © (03.03.06 12:10) [9]
но копирование всех точек в массив тоже не быстрая операция, да еще и памяти порядочно займет
ScanLine сделает это за 00:00.000, а TBitMap.Canvas.Pixels[x,y] за 02:23.385.
У меня на все функции счетчик вренени написан и на моих изображениях получаются такие результаты. А памяти не так уж и много, если учесть то, что все изображения 8-битные.
GrayFace © (03.03.06 10:21) [5]
ЖДУ.
← →
Andy BitOff © (2006-03-03 13:03) [11]StriderMan © (03.03.06 12:10) [9]
посмотрел исходники TCanvas
GetPixel := Windows.GetPixel(FHandle, X, Y);
чутье подсказывает что API не очень быстро это дело отработает...
Цитата из статьи по ссылке выше:
Причины низкой скорости доступа к Pixels вкратце таковы: при каждом таком обращении вызываются функции API SetPixel или GetPixel, которые должны заблокировать передаваемый контекст устройства (далее DC - Device Context), определить текущее преобразование координат, с его учетом проверить, попадает ли пиксел в доступный регион DC, установить или прочитать значение цвета пиксела с преобразованием к нужному цветовому формату, что осуществляется c помощью "блиттинга" - копирования прямоугольного участка DC, после чего разблокировать DC. Все это требует существенных затрат процессорного времени (в том числе и на переход в режим ядра и назад).
← →
GrayFace © (2006-03-04 14:46) [12]Отправил. Есть одно несовместимое изменение: я ввел свойство QPixels - работа с пикселями "напрямую". В случае палитры это номер цвета, в случае 24,32 bit - перевернутый цвет. Поэтому, флаг работы с палитрой я убрал.
← →
Andy BitOff © (2006-03-04 16:24) [13]GrayFace © (04.03.06 14:46) [12]
Получил, спасибо.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2006.04.09;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.017 c