PILtranspose
と関数を使用して、目的の結果を得るrotate
ことができます。composite
これらはすべて画像モジュールにあります。
結果をより明確にするために、最初の画像を少し変更しました。手始めに、ドットを目立たせるために各ドットのサイズを大きくしました。
以下のコードは、最初に、左上から右下の対角線の下にある画像の半分を選択するマスクでオーバーレイされた最初の画像を示しています。

次に、元の画像と鏡像の合成を示します。

import Image
import ImageDraw
imsize = 400
img = Image.new("L", (imsize,imsize), "white")
draw = ImageDraw.Draw(img)
coords = [(100,70), (220, 310), (200,200), (80,20)]
dotSize = 50
for (x,y) in coords:
draw.rectangle([x,y,x+dotSize-1,y+dotSize-1], fill="black")
## mirror image along the diagonal
img2 = img.rotate(90).transpose(Image.FLIP_TOP_BOTTOM)
## mask
mask = Image.new("L", (imsize,imsize), "black")
maskdraw = ImageDraw.Draw(mask)
# draw a triangle on the mask dividing the image along the diagonal
maskdraw.polygon([(0,0),(0,imsize),(imsize,imsize)], fill="white")
# show the mask overlaid on the original image
Image.blend(mask, img, 0.5).show()
# compute and show the blended result
img3 = Image.composite(img, img2, mask)
img3.show()