19.09.2004 01:15
Программирование: алгоритмы масштабирования изображений (+)
Кто может подсказать, где достать информацию по масштабированию изображений - методы линейный, кубик, бикубик, сплайн, бисплайн.

Искал в поисковиках - ничего полезного/конкретного.

Буду очень признателен за скорый ответ!
19.09.2004 03:01
mozzie
полуправильное масштабирование
Есть строчка пикселей $pixels, в которой картинка содержится в виде \x00\xff ... и тому подобное длиной $w*$h*$n ($n - число цветов CMYK или RGB). Я возюкаю мышкой на виджете картинки и над картинкой появляется увеличенное изображение в квадратике(типа квадратная такая лупа). $scale - масштаб, только увеличение... уменьшение perl под XWindow не потяет, либо как то убыстрять.

Код который ответственнен за координаты (высчитывает положение центра курсора на картинке и соответственно высчитывает нужные яркости пикселей в строке пикселей. $i, $j - номера точек в двумерном массиве цифр, соответствующем картинке, $x,$y - координаты курсора, $k размер квадратика,в центре которого находится курсор и который надо увеличивать, $jj не помню какой параметр):

my $preview;
for my $i(1 .. $k){
my $r = substr $pixels, 3*($x-$k/2)+($i+$y-$k/2)*($w*3+$jj), $k*3;
$preview.=$r;
}

Код, который удваивает(удесятеряет и т.п.) каждый пиксель. Т.е. только в длину вдвое длинней. вот, короче тупой и злобный код, зато иногда работает... :)

if($scale!=1){$preview=~s/(...)/$1 x $scale/gex;}

Код который строку пикселей превращает в картинку(но это из библиотеки, потому тут ниче интересного нет):

# print length $preview," \n";
$pixbuf = Gtk2::Gdk::Pixbuf->new_from_data
($preview, # packed image data in a scalar
'rgb', # only 24- or 32-bit RGB are supported
0, # no alpha, data is 24-bit
8, # only 8 bits per sample are supported
$k*$scale, # in pixels
$k*$scale, # in pixels
$k*$scale*3); # number of *bytes* in each row
$preview='';
19.09.2004 05:37
mozzie
это я все к тому, что
в моем понимании, когда масштабируется изображение в +, должны проглядываться пикселизация. Т.е. as is и простое линейное увеличние (уменьшение - не знаю как, тут вроде как-то все хитрым должно быть).

А если масштабируемое изображение интерполировать(для пущего коленкора), т.е. при увеличении масштаба пикселизацию сглаживать, то это уже не картинка. А попытка из фотографии сделать векторную графику.

такие вот мысли...
21.09.2004 19:33
не то
Идея была получить конкретные алгоритмы ресэмплинга, когда вместо одного изображения строится другое, с учетом исходного, т.е. применяется интерполяция.
21.09.2004 20:22
mozzie
тады ой.
тогда не знаю... :(
21.09.2004 20:28
Игорь Абрамов
поищите
поищите слово halftoning. Это не совсем то, но рядом могут быть
и подходящие алгоритмы.
27.09.2004 01:27
все ок
материалы были присланы по почте одним знакомым, инет-поиск в данном случае не помог :(
Извините, только зарегистрированные пользователи могут публиковать сообщения в этом форуме.

Кликните здесь, чтобы войти