みなさん、こんにちは。
http://i48.tinypic.com/316qb78.jpgの画像を参照してください。
電子顕微鏡のMRC画像から細胞のエッジを抽出するアプリケーションを開発しています。
MRCファイル形式はボリュームピクセルデータ(http://en.wikipedia.org/wiki/Voxel)を格納し、3D char配列(char ***)を使用してMRCファイルからデータ(グレースケール値)をロードおよび格納します。
画像に示されているように、XY、YZ、ZX平面をそれぞれ表示する3つのビューアがあります。ビューアの上部にあるスクロールバーは、軸に沿って画像スライスを変更するために使用します。
ユーザーがスクロールバーの位置を変更したときに実行する手順は次のとおりです。
1)新しいスクロールバーの値を取得します(これは選択されたスライスです)
2)関連平面(YZ、XY、またはZX)の場合、3D char配列(char ***)を読み取って、選択したスライスの(char *スライス;)配列を生成します。
3)新しいQImage *(Format_RGB888)を作成し、「slice」を読み取ってピクセル値を設定します(img-> setPixel(x、y、c);を使用)。
4)この新しいQImage *は、paintEvent()メソッドでペイントされます。
集中的なプロセスであるため、別のスレッドで「エッジ検出」プロセスを実行します。このプロセスでは、検出された曲線(ピクセルのセット)をQImage *の上に(レイヤーとして)描画する必要があります。これは、QTスレッドの外部でdrawPoint()メソッドを呼び出す必要があることを意味します。
この場合、QImageを使用するのが最善の方法ですか?
別のスレッドからQT描画メソッドを実行するための最良の方法は何ですか?
前もって感謝します、