require"imlua"
require"imlua_process"

local filename = "lena.jpg"

local image = im.FileImageLoad(filename)
local gray = im.ImageCreate(image:Width(), image:Height(), im.GRAY, image:DataType())
local binary = im.ImageCreate(image:Width(), image:Height(), im.BINARY, image:DataType())
local region = im.ImageCreate(image:Width(), image:Height(), im.GRAY, im.USHORT)

-- make it grayscale
im.ConvertColorSpace(image, gray)
gray:Save("lena_gray.jpg", "JPEG")

-- make it binary
im.ProcessSliceThreshold(gray, binary, 0, 128)
binary:Save("lena_binary.jpg", "JPEG")

local count = im.AnalyzeFindRegions(binary, region, 4, 1)
print("regions: ", count)

local region2 = im.ImageCreate(image:Width(), image:Height(), im.GRAY, im.BYTE)
im.ConvertDataType(region, region2, 0, 0, 0, 0)

local region3 = im.ImageCreate(image:Width(), image:Height(), im.MAP, im.BYTE)
im.ConvertColorSpace(region2, region3)
region3:SetPalette(im.PaletteHighContrast(), 256)
region3:Save("lena_region.gif", "GIF")