Example #1
0
def merge(img1, img2, thresh1, thresh2):

    width1, height1 = img1.getWidth(), img1.getHeight()
    width2, height2 = img2.getWidth(), img2.getHeight()

    output = IJ.createImage("T_image", "16-bit", width1, height1, 1)
    output = output.getProcessor()

    alt_output_1 = IJ.createImage("T_image", "16-bit", width1, height1, 1)
    alt_output_1 = alt_output_1.getProcessor()

    alt_output_2 = IJ.createImage("T_image", "16-bit", width1, height1, 1)
    alt_output_2 = alt_output_2.getProcessor()

    img1_output = IJ.createImage("T_image", "16-bit", width1, height1, 1)
    img1_output = img1_output.getProcessor()

    img2_output = IJ.createImage("T_image", "16-bit", width2, height2, 1)
    img2_output = img2_output.getProcessor()

    composite_pixels = []
    img1_info = img1.getProcessor().convertToFloat()
    img2_info = img2.getProcessor().convertToFloat()

    thresh_val1 = max(img1_info.getPixels()) * (thresh1 / 100)
    thresh_val2 = max(img2_info.getPixels()) * (thresh2 / 100)

    for row in range(height1):
        for column in range(width1):
            img1_pixel = img1_info.getPixelValue(
                column,
                row,
            )
            if img1_pixel < thresh_val1:
                img1_pixel = 0
            else:
                img1_pixel = 255

            img2_pixel = img2_info.getPixelValue(
                column,
                row,
            )
            if img2_pixel < thresh_val2:
                img2_pixel = 0
            else:
                img2_pixel = 255

            min_pixel = int(min(img1_pixel, img2_pixel))
            alt_pixel_1 = get_alt_pixel(img1_pixel, img2_pixel)
            alt_pixel_2 = get_alt_pixel(img1_pixel, img2_pixel, variant=False)

            output.putPixel(column, row, min_pixel)
            alt_output_1.putPixel(column, row, alt_pixel_1)
            alt_output_2.putPixel(column, row, alt_pixel_2)

            img1_output.putPixel(column, row, img1_pixel)
            img2_output.putPixel(column, row, img2_pixel)

    output = ImagePlus("my_image", output.convertToFloat())
    alt_output_1 = ImagePlus("my_image", alt_output_1.convertToFloat())
    alt_output_2 = ImagePlus("my_image", alt_output_2.convertToFloat())

    img1_output = ImagePlus("my_image", img1_output.convertToFloat())
    img2_output = ImagePlus("my_image", img2_output.convertToFloat())

    return (output, alt_output_1, alt_output_2, img1_output, img2_output)