Кто-нибудь знает какой-нибудь более быстрый способ выполнения роста региона в DM? У меня есть изображения частиц, похожие на тестовое изображение в приведенном ниже примере, каждая частица имеет меньшие области с более низкой интенсивностью внутри частицы. Я хочу вырастить эти области с самой низкой интенсивностью, чтобы заполнить границы всей частицы. Этот скрипт работает с расширением, и если поставить x = 1024 или 2048, он уже будет слишком медленным....
редактировать:
Я знаю образ seg заранее. Но я не понимаю, как можно добиться конечных результатов с помощью простой команды tert(), поскольку разные частицы имеют разные значения. Идея субрегионов может сработать, для этого потребуется подсчет частиц. Есть команда меню "анализировать частицы", которая может это сделать, но как это можно сделать быстро с помощью скрипта? Вот реальный пример:
( Внешняя ссылка для TIF в полном разрешении (DropBox) )
Например, самая большая частица будет иметь значения 29, наименьшее число внутри этой частицы. Я также отредактировал код для работы с передним изображением.
// $BACKGROUND$
image front:=getfrontimage()
image newfront = front
number x,y,i,su,su1,val=14,ok=1,count = 0,min,max,z,j,mmax=0
getsize(front,x,y)
image seg := binaryimage("",x,y)
image new := binaryimage("",x,y)
image mp:= binaryimage("",x,y)
minmax(front,min,max)
image front1 = front
seg=tert(front1>0,1,0)
for(i=1;i<=max;i++)
{
new=tert(front1==i,1,0)
su = sum(new)
result(" int "+i+" of "+max+" \n")
while(ok)
{
mp = MPdilate( new ,7)
mp = mp*seg
if(sum(mp)==su) ok=0
su = sum(mp)
count++
new=mp
}
ok=1
front1 = tert(new>0,i,front1)
}
showimage(front1)