Необходимо в это проге http://cp.people.overclockers.ru/cgi-bin/dl.pl?id=6875&filename=ImgProc.rar
сделать следующее добавить кнопку, при нажатии на которую находится путь минимальной стоимости из точки (x0,y0) в точку (x1,y1). Переходить можно из точки (x,y) в точки (x,y-1), (x-1,y), (x-1,y-1). Стоимость перехода равна (3*256-расстояние между цветами пикселов) * 2 для переходов первых двух видов (по сетке) и * 3 для точек последнего вида (по диагонали). Под расстоянием между цветами пикселов понимаем |R1-R2|+|G1-G2|+|B1-B2|. Т.е. требуется пройти по кривой с максимальным суммарным изменением цветов. Дополнительное предположение: оптимальный путь не может выходить за пределы прямоугольника (x0,y0)-(x1,y1). вот такие пирожки(((
Кнопку уже создал, написал немного алгоритм, но мля не знаю, что делать дальше, помогите плиз ТТ
а когда надо? проста щас времени нету- сессия(
сессия - это да...
Если не секрет, нахрена это нужно?
сегодня надо...((((
ну пажалуйста там вроде не много
на зачёт надо, препод охренел такие задачи давать на зачёт Т___Т
Ааааа, ну помогите....((((
На мой скромный взгляд - либо здесь хтрость какая, либо можно напрямки динамическим программированием))
Кстати, я вообще не дельфи никогда не писал, поэтому посмотреть не могу, что там за картинка?
ага препод грил, что там надо динамическим программированием, только он нам на практике не показывал что это(((
да любую картинку грузишь туда
зайди на сайт lib.mexmat.ru авторизируйся под ником reader пас @#LiB#@, скачай книгу Вентцель Введение в исследование операций, книга очень слабая но по ней можно быстро выучить азы
на дельфях и паскале никогда не писал, поэтому в написании помочь не могу. А где ты учишься?
фак она большая сильно, мне её на моём канале целый день тянуть(((
fretboard
2.6.2005, 16:55
Вот, например, похожие задачи:
http://altnet.ru/~kitnet/www/metod/book3/doc1/str1.htm
фак хз как с этими битмапами работать
Первая задача из ссылки fretboard(респект) с небольшими модификациями как раз то, что тебе надо. Алгоритм отличается только тем, что максимум на каждом шаге заполнения матрицы выбирается не из двух, а из трех чисел.
в каком смысле как? Я с дельфи плохо знаком, но должны же там быть функции возвращающие цветовой код пикселя в РГБ
или хотя бы что то навроде
R(x,y) G(x,y) B(x,y)?
в том-то и дела что неизвестно((((
алгоритмически я вроде бы теперь понимаю, но реализовать не знаю как
Т.е. надо понять как спросить про цвет пикселя с заданными координатами
как раз в процедуре последней TImgProcForm.MinPriceClick более менее сделано, осталось толко цикл этот for запустить по заполнению массива
млин ещё указатели, я тоже хз как с ними работать
пока бы сделать для крайних противополжных точек картинки
посмотри процедуру TImgProcForm.btnGrayClick
там ка-то через тип TRGBTRIPLE это делается
не пойму как этот scanline работает
я не могу посмотреть рар на работе :(((
не разрешают ставить
fretboard
2.6.2005, 17:49
Насколько я помню, доступ к цвету отдельного пикселя - что-то вроде TBitmap.Canvas.Pixels[x,y], цвета описываются типом RGBColor.Color. Точнее глянь в документацию.
неееет, это я не писал, я пичсал только процедуру последнюю, которая связана с кнопкой maxprice + все типы которые к ней специально прилагаются, моя задача написать эту процедуру как в задании написано, мляяяя
ты используещь класс TBitmap?
по клавишам не попадаю :(
В каком виде хранится картинка?
ты посмотри в проге, картинка в виде файла любого на винте jpg
я в задании маленько неправильно написал надо так: Переходить можно из точки (x,y) в точки (x,y+-1), (x-+1,y), (x+-1,y+-1).
т.е. можно идти в любую сторону?
а там сказано, что маршрут должен буть кратчайший?
если нет - задача не имеет смысла
краткость маршрута вроди б пофигу
ээ минуточку,
а нужна максимальная или минимальная стоимость??? а то ты там в двух местах разное написал
"требуется пройти по кривой с максимальным суммарным изменением цветов. "
а это че?
" при нажатии на которую находится путь минимальной стоимости из точки (x0,y0) в точку (x1,y1). "
Если правильно понял
GetRValue(Image1.Picture.Bitmap.Canvas.Pixels[x,y]);
GetGValue(Image1.Picture.Bitmap.Canvas.Pixels[x,y]);
GetBValue(Image1.Picture.Bitmap.Canvas.Pixels[x,y]);
нее, это понятно, тк стиоимость вычисляется
"(3*256-расстояние между цветами пикселов) * 2 для переходов первых двух видов (по сетке) и * 3 для точек последнего вида (по диагонали). "
фак, не допираю, как этто делать
как заполнить массив ways и чего с ним потом делать
Я тут вспомнил, что задача нахождения пути минимальной стоимости решается алгоритмом расставления временных пометок Дейкстры. Ты че за алгоритм то в итоге использовать будешь?
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.