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)