Хороший способ начать писать такой скрипт - использовать макро-рекордер ImageJ - вы можете начать это с Plugins > Macros > Record ...
. В этом примере я предполагаю, что вы переключили опцию Record:
на JavaScript
, но если вы более знакомы с языком макросов ImageJ или написанием плагинов в Java, один из других может быть лучшим выбором , Если вы затем откроете свое изображение и используете Image > Stacks > Set Slice ...
и выберите (скажем) срез 20, вы должны увидеть:
imp.setSlice(20);
... появляются в диктофоне. Теперь, если вы запустите Image > Adjust > Brightness/Contrast...
и выберете Auto
, вы увидите в рекордере, что это эквивалентно запуску Enhance Contrast
с сохранением 0,35% насыщенных пикселей. Проблема с этим, как вы заметили, заключается в том, что при этом настраиваются минимальные и максимальные значения для всего стека, а не только этот фрагмент. Тем не менее, вы можете запустить Enhance Contrast
с другими параметрами, запустив Process > Enhance Contrast
. В разделе об этой опции на вики-документации ImageJ объясняется, что если вы хотите изменить значения пикселей, а не устанавливать минимальные и максимальные значения для стека, вам необходимо выбрать параметр «Нормализация». Если я решу вместо этого сделать это, то рекордер макросов запишет:
imp.setSlice(20);
IJ.run(imp, "Enhance Contrast", "saturated=0.35 normalize");
... и вы должны увидеть, что только срез 20 был изменен. Затем вы можете заключить это в цикл, который запускает одно и то же улучшение для каждого среза с помощью:
var imp = IJ.getImage();
var n = imp.getStackSize();
for( var i = 0; i < n; ++i) {
imp.setSlice(i+1);
IJ.run(imp, "Enhance Contrast", "saturated=4 normalize");
}
(Если вы используете Фиджи, тогда Script Editor (например, через File > New > Script
) - это простой способ экспериментировать с такими скриптами.)
Конечно, использование параметра нормализации приводит к изменению значений пикселей, что в данном случае означает, что вы теряете информацию, поэтому я не буду использовать полученный стек для количественных результатов.
Надеюсь, это пригодится.