2014-02-03 2 views
0

У меня есть одна проблема для всех продвинутых пользователей и разработчиков ImageJ. В моем макросе (см. Макрос ниже) я хотел бы вставить следующую задачу:Как пометить объекты, которые касаются края, чтобы иметь возможность обрабатывать их по-разному в последующем анализе

Я анализирую частицы в ROI и те частицы/объекты, которые касаются края изображения, я хотел бы отметить «*», в специальном столбце в таблице результатов. Вероятно, если предложение выполнит задачу, но я чистый начинающий макрос и действительно нуждаюсь в советах.

(я знаю вариант «исключить по краям», но мне нужно участки этих объектов, чтобы вычислить сумму всех областей на изображении, но мне нужно, чтобы исключить их, чтобы вычислить среднюю площадь)

id = getImageID(); 
for (i=0 ; i<roiManager("count"); i++) { 
    selectImage(id); 
    roiManager("select", i); 
    run("Analyze Particles...", "size=0.008-Infinity circularity=0.00-1.00 show=Outlines clear"); 
} 

Ваша помощь в оценке, Jernej

ответ

0

Просто обработайте касание края и внутренние частицы отдельно. Вы можете получить изображение с только касающимися края частиц путем XORing изображения со всеми частицами, а изображение с трогательными частицами исключено.

Этот макрос создает три изображения: один со всеми частицами, один без краев, трогательных частиц и один с только торцевой трогательной частиц:

run("Blobs (25K)"); 
setThreshold(126, 255); 
run("Analyze Particles...", "size=0.01-Infinity circularity=0.00-1.00 show=Masks clear"); 
rename("all"); 
run("Analyze Particles...", "size=0.01-Infinity circularity=0.00-1.00 show=Masks exclude clear"); 
rename("not touching"); 
imageCalculator("XOR create", "all","not touching"); 
rename("touching"); 

Вы можете анализировать каждый из них по отдельности и добавить маркер :

selectWindow("touching"); 
run("Analyze Particles...", "size=0.01-Infinity circularity=0.00-1.00 show=Outlines display clear in_situ"); 
for(row = 0; row < nResults; row++){ 
    setResult("touching", row, "*"); 
} 

selectWindow("not touching"); 
run("Analyze Particles...", "size=0.01-Infinity circularity=0.00-1.00 show=Outlines display in_situ");