画像処理結果の表示方法 – プログラミング – Home

画像処理結果の表示方法
 
通知
すべてクリア

画像処理結果の表示方法


北風ふうた
 北風ふうた
(@北風ふうた)
ゲスト
結合: 19年前
投稿: 3
Topic starter  

こんばんわ。VC6 MFC ダイアログベース W2kで開発を行っています。

現在DICOMという医療画像を対象に開発を行っています。
NewやVector何でもいいのですが、メモリ上に画像データを取得し、
簡単な処理を加え表示しているのですが、表示が遅くて困っています。

512*512*16Bitsの画像に対してコントラストの変更をマウスのドラックで行いたいのです
が、書くピクセル事処理している(まとめてメモリ上のデータの処理ができればいいので
すが方法がわかりません)こととSetPixelを使っていることでかなり遅いです。というか
処理が追いつきません。

考えられる良法があれば御教示お願いいたします。


引用解決済
トピックタグ
超初心者
 超初心者
(@超初心者)
ゲスト
結合: 23年前
投稿: 139
 

メモリ上のデータを
1画素ごとに計算ながらSetPixelで表示
しているってことですか?

オリジナルのDICOMデータとは別に
メモリ上にコントラストを変えたRGB各8ビット系3バイトで
構成されたデータを作りましょう。
並び順は逆のBGRで、上下も逆にします。

実際にSetPixelがどれほど遅いのか知りませんが、
コントラスト後のデータをSetDIBitsかSetDIBitsToDeviceで表示すれば
SetPixelを数万回実行するより速いはずです。(試していません。)

SetDIBitsToDeviceについて詳しくは検索してください。


返信引用
北風ふうた
 北風ふうた
(@北風ふうた)
ゲスト
結合: 19年前
投稿: 3
Topic starter  

DIBつかったら早いです。
ありがとうございます。

あとコントラスト計算を各画素にしてるのをどうにかすっきりしたいのですが、
for (int y=0;y<512; y++)


返信引用
北風ふうた
 北風ふうた
(@北風ふうた)
ゲスト
結合: 19年前
投稿: 3
Topic starter  

すみませんまちがって送信してしまいました。

DIBつかったら早いです。
ありがとうございます。

あとコントラスト計算を各画素にしてるのをどうにかすっきりしたいのですが、
for (int y=0;y<512; y++)
 for (int x=0;x<512; x++)
  im[y][x]=buf[y][x]*2;

ってコードがあったとして
イメージ的にim=buf*2みたいに一気に計算するってことはできないでしょうか?


返信引用
PATIO
(@patio)
Famed Member
結合: 3年前
投稿: 2660
 

>イメージ的にim=buf*2みたいに一気に計算するってことはできないでしょうか?

普通に考えたら無理だと思います。
16bitの各データに対して * 2の演算をしたいわけですから
それぞれを独立して行わないとだめでしょう。
一つの数値として扱うと桁上がりとかの関係でだめでしょうし。
SSEとかを使って複数の変数を一度に計算するとかしないと多分無理なのでは。
それでどの程度早くなるのかは疑問ですけれど。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました