создать новое изображение, выбрав пиксели с наименьшей интенсивностью из двух или более изображений - PullRequest
0 голосов
/ 06 мая 2018

два или более изображений имеют одинаковый размер изображения, например 512X512 пикселей Я хотел бы создать новое изображение, которое выбирает пиксели с наименьшей интенсивностью из этих изображений, например, новое изображение получает пиксель (1,1) из изображения 1, пиксель (1,2) из ​​изображения 2, пиксель (512,512) из изображения 3, потому что интенсивность этих пикселей являются самыми низкими в сравнении всех открытых изображений. Есть ли простой код, как показано ниже? Большое спасибо за вашу помощь!

Моя попытка:

image img1, img2, img3, newimg
img1=getfrontimage()
hideimage(img1)
img2=getfrontimage()
hideimage(img2)
img3=getfrontimage()
showimage(img1)
showimage(img2)
newimag:=min(img1,img2,img3)
showimage(newimg)

1 Ответ

0 голосов
/ 06 мая 2018

Вы уже были очень близки с вашим решением. Команда, которую вы ищете, называется minimum. Это дает (соответствующий) минимум из списка выражений arbirtray. Вы также можете использовать скалярные значения в качестве параметра:

image img1 := realImage("1",4,100,100)
image img2 := realImage("2",4,100,180)
image img3 := realImage("3",4,100,100)
img1 = icol
img2 = irow
img3 = iradius

image img4 := minimum(img1,img2,img3,30)
img4.ShowImage()

Команда minimum() - это все, что вам нужно для вашего примера, но имейте в виду, что вы всегда можете «собрать» все, что вам нужно, с помощью последовательности команд tert (). F.E. следующее будет делать то же самое:

image img4 =  img1
img4 = img2 < img4 ? img2 : img4
img4 = img3 < img4 ? img3 : img4
img4 = 30 < img4 ? 30 : img4
...