C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

■102728 / 1階層)  このPythonをVBで書けるようでしたら
□投稿者/ くま (15回)-(2023/12/16(Sat) 16:56:29)
焼いも様
問題点がいくつかあります。

1. 処理の内容から「画像処理」と考えられます。
Pythonからだと「OpenCV」を使う方法が有名かと思いますが
その辺りの記載がありません。
(この場合「data」です)
その辺はどうしたいのですか?

2. 「numpy」とは高度な算術をPython上で行えるようにしたパッケージです。
先の「OpenCV」と合わせて使うとなると2つの選択肢が発生します

A. Pythonの環境を作成しvb.net側から呼び出す
ただし当然Pythonの環境等を学ばないといけない。

B. 処理を真似たラッパーまたはライブラリ
「OpenCV」->「OpenCvSharp」
「Numpy」->「Numpy.NET」
をインストールして使う。
ただし完全に互換があるわけではありませんので
Pythonの資料を見ても再現できない場合がある。

3. それ以外だと自分で処理内容を理解して再現する方法
今回の場合画像ファイルにランダムで強度の違う[点]を追加するという処理になります。

そうすると「VB.net」では以下の作業で求める事ができます
https://dobon.net/vb/dotnet/programing/random.html
※厳密にはPythonのランダムの場合、正規分布の標準偏差を利用しているので
値の発生度合いに差が発生します。

> noise = np.random.normal(0, 1, len(data))
Dim r As New System.Random()
Dim noise As Double() = New Double(data.length) {}
r.NextDouble(noise)

画像に点を描く方法
https://dobon.net/vb/dotnet/graphics/createimage.html
SetPixelメソッドで点を描く
※今回のお題「ホワイトノイズ」と近い「カラーノイズ」の処理ですね。
「ホワイトノイズ」にしたいのであれば
> Dim c As Color = Color.FromArgb(rnd.Next(256), rnd.Next(256), rnd.Next(256))

Dim brightness as Byte = rnd.Next(256)
Dim c As Color = Color.FromArgb(brightness, brightness, brightness)
にすれば行えます。

どちらにしても
画像データは3次元配列で(2次元の場合もありますが)管理されていて
それに対してOpenCVの場合画像処理的アプローチで変換を行い
numpyの場合算術的なアプローチ(この場合、行列)により処理を行う
その辺りの基本が分からないと使いこなせないと思います。

デバック等考えるとPython覚えたほうが早いです。

※あと.NET Frameworkなのか.NET Coreなのかバージョン等書かないと正確には答えられません
回答はとりあえず「.NET Framework」ベースとさせていただきました。
編集キー/

前の記事(元になった記事) 次の記事(この記事の返信)
←このPythonをVBで書けるようでしたら /焼いも 返信無し
 
上記関連ツリー

このPythonをVBで書けるようでしたら / 焼いも (23/12/16(Sat) 12:39) #102726
このPythonをVBで書けるようでしたら / くま (23/12/16(Sat) 16:56) #102728 ←Now
Re[1]: このPythonをVBで書けるようでしたら / 焼きも (23/12/16(Sat) 16:51) #102727 解決済み
  └ Re[2]: このPythonをVBで書けるようでしたら / くま (23/12/16(Sat) 16:57) #102729 解決済み

上記ツリーを一括表示 / 上記ツリーをトピック表示
 
上記の記事へ返信