Как экспортировать/преобразовать линейную проекцию в таблицу Excel и упорядочить координату Y

Я написал код, который может получить линейную проекцию (профиль интенсивности) изображения, и я хотел бы преобразовать/экспортировать эту линейную проекцию (профиль интенсивности) в таблицу Excel, а затем заказать все координаты Y. Например, кроме максимального и минимального значений всех координат Y, я хотел бы знать наибольшее значение координаты 5 и наименьшее значение координаты. Есть ли какой-либо код, который может достичь этой функции? Спасибо,

image line_projection
Realimage imgexmp
imgexmp := GetFrontImage()
number samples = 256, xscale, yscale, xsize, ysize
GetSize( imgexmp, xsize, ysize )
line_projection := CreateFloatImage( "line projection", Xsize, 1 )
line_projection = 0
line_projection[icol,0] += imgexmp
line_projection /= samples
ShowImage( line_projection )

person together    schedule 23.02.2016    source источник
comment
Вы запрашиваете код для экспорта в Excel или для сортировки значений?   -  person BmyGuest    schedule 24.02.2016


Ответы (2)


Поиск «отсортированного» списка значений

Если вам нужно отсортировать большие списки значений (например, большие изображения), следующего может быть недостаточно. Однако, если ваша цель состоит в том, чтобы получить «максимальное значение x» с относительно небольшим числом X, то следующий код вполне подойдет:

number nFind = 10
image test := GetFrontImage().ImageClone()
Result( "\n\n" + nFind + " highest values:\n" )
number x,y,v
For( number i=0; i<nFind; i++ )
{
    v = max(test,x,y)
    Result( "\t" + v + " at " + x + "\n" )
    test[x,y] = - Infinity()
}

Работа с копией и последующее «удаление» максимального значения путем изменения значения этого пикселя. Команда max выполняется быстро — даже для больших изображений — но итерация for-loop и настройка отдельных пикселей выполняются медленно. Следовательно, этот сценарий слишком медленный для полной «сортировки» данных, если они большие, но он может быстро получить n «самых высоких» значений.

person BmyGuest    schedule 24.02.2016

Это некодирующий ответ:

Если у вас есть линейный график в DigitalMicrograph, вы можете просто скопировать и вставить его в Excel, чтобы получить числа.

т. е. с изображением LinePlot самым передним, нажмите CTRL + C, чтобы скопировать
(убедитесь, что на нем нет ROI).
Переключитесь на Excel и нажмите CTRL + V.
Готово.
введите здесь описание изображения ==› введите здесь описание изображения

person BmyGuest    schedule 24.02.2016