私は扱っています
myWxImage
、 画像。myLabelImage
、画像と同じ形状で、ピクセルごとに1つのラベル(整数)を含むnumpy配列myLookupTable
、ラベルと同じ数のエントリを持つ1次元のnumpy配列、つまりベクトル。(ラベルを浮動小数点数にマップするために使用します。)
目標は、ピクセルを反復処理し、すべてのピクセルについて、そのラベルを検討し、対応する浮動小数点数を調べて、このピクセルの色で乗算することです。
次のコードはこれを正確に実行しますが、遅すぎます。もちろん、ここで非常に理にかなっているC ++またはGPUプログラミングに頼らずに、これをより速く行う方法についての簡単な提案がありますか?
weightedImage = wx.EmptyImage(myWxImage.Width, myWxImage.Height)
rgb = numpy.zeros(3, dtype=int);
for x in range(0, myWxImage.Width):
for y in range(0, myWxImage.Height):
label = myLabelImage[x, y]
weight = myLookUpTable[label]
rgb[0] = myWxImage.GetRed(x, y)
rgb[1] = myWxImage.GetGreen(x, y)
rgb[2] = myWxImage.GetBlue(x, y)
rgb = rgb * weight
weightedImage.SetRGB(x, y, rgb[0], rgb[1], rgb[2])
myBitmap = wx.BitmapFromImage(weightedImage)
# draw myBitmap