Каков синтаксис ImageResize () - PullRequest
       21

Каков синтаксис ImageResize ()

0 голосов
/ 15 октября 2018

У меня есть данные, которые меняются в размере, и я хочу отобразить их в одном и том же окне.Команда

void ImageResize( BasicImage im, Number num_dim, Number... ) 

выглядит как потенциальная подгонка, но синтаксис вообще не ясен.
Допустим, у меня есть набор данных 512x5, и теперь он должен быть 367x5.

1 Ответ

0 голосов
/ 15 октября 2018

, Number...) указывает, что эта команда принимает различное количество параметров, все они интерпретируются как number параметры.Команды, которые делают это, обычно используют один из своих других параметров, чтобы указать, сколько таких параметров следует.Типичным примером этого является также команда SliceN.

В этом конкретном случае команда позволяет не только изменять размер измерений в изображении, но и количество измерений.Это очень полезная команда для преобразования 2D-изображения в 3D-стек или тому подобное.

Команда ImageResize( BasicImage im, Number num_dim, Number... ) выполняет несколько действий:

  • Она заменяет im на месте, поэтому метаданные, отображение иокно остается прежним
  • Оно регулирует калибровку размера при изменении размера.Здесь предполагается, что поле зрения до и после изменения размера одинаково.(Команда может использоваться для простого масштабирования изображений, как показано в примере ниже.)
  • Все значения изображения im установлены на ноль.(Если вам нужно сохранить значения, вам нужно воздействовать на клон изображения!)

Пример 1. Изменение размера изображения с билинарной интерполяцией

image before := GetFrontImage()
number sx, sy
before.GetSize(sx,sy)
number factor = 1.3
image after := before.ImageClone()  
after.ImageResize( 2, factor*sx, factor*sy )    // Adjusts the empty container with meta-data 
after = warp(before, icol/factor, irow/factor ) // interpolate data
after.ShowImage()

Пример 2. Расширение 2D-изображения в 3D-стек

number sx = 100
number sy = 100
image img := RealImage("2D",4,sx,sy)
img = iradius* Random()
img.ShowImage()
OKDialog("Now into a stack...")
number sz = 10
img.ImageResize(3,sx,sy,sz) // All values are zero now!
img = iradius * Random()
...