Я пытаюсь зарегистрировать стеки флуоресцентных изображений в MATLAB, но у меня возникли проблемы при использовании imregister
. Это работало хорошо, когда присутствовало много фонового шума, но терпело неудачу, когда сигнал в фоновом режиме выше. Чтобы это исправить, я подумал об использовании пакета Turboreg
с Фиджи, так как он был разработан для выравнивания таких данных.
Однако большая проблема в том, что я использую MATLAB 2016b, который использует Java 7, а Фиджи требуется Java 8 для правильной работы. Поскольку я не могу изменить версию Java для MATLAB (причины), мне интересно, есть ли способ улучшить imregister
, чтобы он работал аналогично Turboreg
, или есть другая функция, которая может выполнять аналогично.
Код, который я использую для imregister
, выглядит следующим образом:
function Registerstack(Vid)
tic
display('Registration in Process')
mImage=size(Vid,2);
nImage=size(Vid,1);
NumberImages=size(Vid,3);
[optimizer, metric] = imregconfig('multimodal');
optimizer.InitialRadius = 0.009;
optimizer.Epsilon = 1.5e-3;
optimizer.GrowthFactor = 1.05;
optimizer.MaximumIterations = 5;
RVid = zeros(nImage,mImage,NumberImages,'uint16');
RVid(:,:,1) = Vid(:,:,1);
for r = 2:NumberImages
RVid(:,:,r) = imregister(Vid(:,:,r),Vid(:,:,1),'rigid', optimizer, metric);
end
toc
display('Registration Complete')
end
Редактировать: для получения дополнительной информации. Я действительно рассмотрел вопрос об использовании эстимейта GeometricTransform , но из-за характера данных он не может извлечь из изображения достаточное количество функций и выполнить надлежащую регистрацию.