Предыдущая Следующая
old_image, элементы массива new__image приравниваются
нулю, и начинается новая итерация. Итерации прекращаются, когда пользователь вызывает процедуру
termininating_proc, КОТОрая фиксирует ЩеЛЧКИ МЫШИ
Эта программа прелставляет собой пример реализации летерминисти-ческого IFS алгоритма. На кажлой итераиии к массиву old_image (который состоит из нулей и ели ни и) применяется IFS, чтобы опреле-лить элементы массива new__image. Затем массив new_image выво-лится на экран, используя ивет, сохраненный с IFS-преобразованием. Аля завершения олной итераиии значения из new_image помешаются в old__image и new_JLmage обнуляется.
II If clear_Bcr flag iB Bet, clear the window between // iterations. The structures gr__Betup and gr contain // window graphics parameters. if (clear^Bcr)
draw__border (gr__Betup, gr, CLEAR_WINDOW) ; iter++;
for (i=l;i<=nrowB;i++) for (j<=ncolB; if (old__image [i] [ j] ) (
// Map the old image array to the virtual X-Y
// plane:
// Map 1 to x__min and ncolB to x max:
 54_Фракталы и вейвлеты для сжатия изображений в Аействи|(
х = ((float)(j-1)/(float)(ncols-1))*x_range +
gr_setup->x_min; // Map nrows to y_min and 1 to y_max: у = ((float)(nrows - i)/
(float) (nrows-1)) *y__range + gr_setup->y_juin ; // Loop through all the transformations // (no_of_fns) in the IFS: for (k = l;k<=no_of_fns;k++) (
ifs = *(coeff_struct *) (coeff_list~>at(k)) ; xnew = ifs.a*x + ifs.b*y + ifs.e; ynew = ifs.c*x + ifs.d*y + ifs.f; if (fabs(xnew) + fabs(ynew) > IFS_TOO_BIG) { messagejputs (MBJSXCLAIM, "IFSPROC", "This system diverges!\r\n" "Check to see that all
transformations\r\n" "are contractions."); goto exitjproc; } // end if
// Map the virtual X-Y plane back to the new // image array:
// Map x_min to 1 and xjnax to ncols: col = ((xnew - gr_setup->x_min)/x_range)*
(ncols-1) + 1; // Map y_min to nrows and yjnax to 1: row = nrows - ((ynew - gr_s e tup - >y__mi n)
/y^range)*(nrows-1)/ new_image[row][col] = 1/
// Plot the X-Y point in the window in color: xy_to_window_color (gr,xnew,ynew,
rgb_ifs_color (ifs)); } // end k } // end if, i, j Предыдущая Следующая
|