午後わてんのブログ

ベランダ菜園とWindows用アプリ作成(WPFとC#)

WPF、C# .NET

C#で累積分布関数っぽいの、配列の値から作った正規分布の指定区間の面積(割合)を台形の面積で求めてみた

正規分布の面積 x(横軸)が0~1までの塗りつぶしてあるところの面積が、全体の何%なのかを知りたい エクセル2007ならNORMDIST関数を使えばラクにできる、新しいエクセルならもっとラクかも 平均=0、標準偏差=0.7のときxが0~1までの面積の割合は =NORMDIST(1,…

画像の2値化の誤差拡散処理の走査を左右交互

caca.zoy.org 昨日に続いて、こちらを参考にして処理の方向を左右交互にするのを試した 昨日の記事では処理の方向は偶数行、奇数行ともに右進行だったのを、今回は奇数行を左進行にしてみる、これで処理の方向は左右交互になる 左進行時の誤差拡散 右進行と…

誤差拡散法を試してみた2回め

誤差拡散 Libcaca study - 3. Error diffusion こちらを参考にして試してみた 左から FloydSteinberg JaJuNi(Jarvis, Judice, and Ninke) FloydSteinbergDervatives ShiauFan ShiauFan2 Stucki Burkes Sierra SierraTwoRow SierraLite Atkinson ? PixelForm…

画像をアプリに埋め込んでアプリで利用するまでの手順メモ

dobon.net 最初はこの方法で試してみたけど、WPF+.NET Coreっていう違いのためかうまくできなくて dobon.net ここと smdn.jp ここを参考にしてできた でも全く同じじゃなくて微妙に違うところもあったのでメモ 環境 Visual Studio Community 2019 .NET Core…

減色テスト、グレースケール版その2

20200327_減色テストグレースケール.zip github.com 今回はギットのブランチってのを使って、それのリンクを貼り付けた master ┗ブランチA ┗ブランチB←これのリンク 変更を加えていくのはブランチAで、ブログに貼り付けるときはブランチAから新しく作成した…

減色テスト、グレースケール版

2020WPF/20200323_減色グレースケール用 前回の減色パレット作成から、実際の減色変換まで作ってみた 20200323_減色グレースケール用.zip グレースケール画像でテスト パレットはこんな感じで、2色だと64と192 それぞれのパレットで変換したところ 以前のだ…

画像を1bpp(1bit)白黒画像に変換するアプリver1.2

1年以上前のこのアプリ gogowaten.hatenablog.com .NET Frameworkだったので.NET Coreに移植(コピペ)して、ついでにいくつか変更した 変換前後を見比べられるように、画像クリックで元の画像を表示するようにした クリップボードの画像を貼り付けできるよう…

減色パレット作成テスト、グレースケール版

github.com [アプリのファイル名:20200322_減色一括クラス.zip] クリップボードから貼り付けるか、画像ファイルのドロップで画像表示、カラーの画像でもグレースケールで表示 「パレット作成」の右に並んでいる数値ボタンでパレット作成 減色パレット作成方…

画像の使用色数とその色のピクセル数を表示するアプリその6

CountColor1.3.8 クリップボードの画像を貼り付けできるようにした 背景に市松模様を表示できるようにした CountColor1.3.8 ダウンロード先はギットハブ ファイル名:CountColor1.3.8.zip github.com 貼付1ボタン 普通の画像ならこれで貼り付けできるはず Pr…

.NET CoreでもWPFのBitmapSource用のデバッガービジュアライザーを使うには

gogowaten.hatenablog.com gogowaten.hatenablog.com ↑のビジュアライザーを.NET Coreで使おうとしたら こんなエラーが出て使えなかった、どうやらビジュアライザーのdllファイルを置く場所が.NET Frameworkとは違うみたいで、エラー画面にあるパス C:\Users…

WPFのListBox、ItemTemplateで表示変更したListBoxを動的作成したいのでXAMLじゃなくてC#コードで書いてみた

ListBoxを動的追加したい、それもItemTemplateで表示を変更したListBox、さらにBindingも ボタンクリックでListBox追加される アプリのコードとダウンロード先 ファイル名:20200317_ListBox.zip github.com ListBoxの設定をXAMLで書いた部分 <ListBox x:Name="MyListBox1" ItemsSource="{Binding}"> <ListBox.ItemTemplate> <DataTemplate> <StackPanel> </stackpanel></datatemplate></listbox.itemtemplate></listbox>

C#.NET CoreでSIMDを使ってドット積、byte型配列ならMultiplyAddAdjacentが速かった

値は全て255の要素数1千万のbyte型配列、これのドット積を求めるのに色々試してみた SIMDを使わない普通の掛け算と足し算 System.NumericsでSIMD Dot System.Runtime.IntrinsicsでSIMD AVX Multiply + Add SSE2 MultiplyAddAdjacent FMA MultiplyAdd SSE41 D…

C#SIMDで合計値、byte型配列をIntrinsicsとNumericsのAddで合計値の処理速度

IntrinsicsとNumericsのAddでbyte型配列の合計値を計算 使ったアプリは AVX2をサポートしていないCPUだと動かないかも? Intel CPUだとHaswellコアから対応なので第4世代、2013年以降 AMD CPUだとZenコアから対応なので、Ryzen全部とAthlonでもZenコアなら対…

byte型配列から最小値と最大値、CPUのSIMDを使うクラスIntrinsicsとNumericsどちらが速いのか

CPUのSIMDを使うクラスIntrinsicsとNumerics、どちらが速いのかを、要素数1千万のbyte型配列から最小値と最大値を求める時間で比較してみた 今回の方法では結果は差が出なかった。シングルスレッド、マルチスレッドともに同じ速さ。Intrinsicsはポインタを使…

C#でSIMDを使うSystem.Runtime.Intrinsicsを試してみた、byte型配列の合計

SIMDを使っての計算はSystem.Numerics.Vectorクラスと、これとは別にSystem.Runtime.Intrinsicsってのもあるみたいで試してみた 環境 CPU AMD Ryzen 5 2400G(4コア8スレッド) MEM DDR4-2666 Window 10 Home 64bit Visual Studio 2019 Community .NET Core 3.…

C#.NETで分散を求めるマルチスレッド編

前回、シングルスレッド編 gogowaten.hatenablog.com これの続き いろいろ試して一番早かったのはこれ //分散 private double Variance(byte[] ary) { var myBag = new ConcurrentBag<long>(); Parallel.ForEach( Partitioner.Create(0, ary.Length, ary.Length / </long>…

C#.NETで分散を求める2回め、System.Numerics.Vector.Dotも使ってみたけど…

今回の記事は前回の gogowaten.hatenablog.com ↑この記事を書き直したもので 直した理由は速度比較をしていたんだけど、Math.Powの使い所が間違っていて、速度比較になっていないことが記事を書いた6日後に gogowaten.hatenablog.com わかったから、なので前…

C#.NETのMathPowは速くない?べき乗計算は掛け算を繰り返したほうが速い場合もあった

Math.Powを使うと遅くなる状況がある アプリダウンロード先とコードはギットハブ アプリファイル名:20200217_MathPow.zip github.com アプリ作成と計測環境 CPU AMD Ryzen 5 2400G(4コア8スレッド) MEM DDR4-2666 Window 10 Home 64bit Visual Studio 2019 …

ドット積を求めるSystem.Numerics.VectorのDotメソッドを使って分散を求めてみた

2020/02/19追記ここから 処理時間の基準にしたTest01でMathPowの使い方に問題があることが6日後の gogowaten.hatenablog.com ↑の記事でわかったので 書き直したのが ↓ gogowaten.hatenablog.com なのでここから↓はほとんど意味ない 2020/02/19追記ここまで …

本当は速いSystem.Numerics.Vector.Addを使って、int型配列の値合計2回め

前回、前々回でイマイチだったSystem.Numerics.Vector、本当は速かった int型配列の要素の合計の処理時間、シングルスレッド編 test19が今回追加したもの グラフにすると 普通のForループより2倍速くなった! マルチスレッド編 前回で速かったTest12~15より…

int型配列の合計値マルチスレッド編

前回は シングルスレッドだけでの計算だった 今回はマルチスレッド 1から100万1までの連番の合計を1000回求めるのにかかった時間 合計値の正解は500001500001 計測アプリ ボタンを押して待つだけ、test2とtest11だけは極端に遅い、test5とtest21はオーバーフ…

int型配列要素の合計値を求めるのにSystem.Numerics.VectorのAddを使ってみたけど

int型配列要素数100万の合計を100回求める処理時間測定 まとめ forかforeachが速い LINQは遅いけど今どきのCPUなら10億回の計算でも0.5秒で終わる VectorのAddはforより速いこともあるけど条件がめんどくさい 2020/02/11追記ここから gogowaten.hatenablog.c…

C#、配列から最大値を求めるMaxは、MathクラスよりSystem.Numerics.Vectorクラスのほうが速い

要素数1千万のint型配列(値はランダム)から、最大値を1000回求めた時の処理時間は、MathクラスよりVectorクラスのほうが2倍以上速い結果になった 青色グラフはシングルスレッド 赤色グラフは配列を分割してマルチスレッド 緑色グラフは1000回ループを分割し…

.NET Coreで作ったアプリの実行ファイルの作成手順

rksoftware.hatenablog.com こちらを参考にして期待通りの実行ファイルができたのでメモ ソリューションエクスプローラーのプロジェクト名の右クリックメニューから発行 「編集」もしくはペンのアイコンをクリック プロファイルの設定 それっぽいところを変…

.NET Coreを使ってみた、.NET Frameworkで作ったアプリのコードはコピペで動いた

.NET Coreって名前だけは聞いていたけど、わかりやすかったのは codezine.jp なるほど、ってことで.NET Coreを使ってみた 昨日の記事の.NET Frameworkで作ったアプリのコードをコピペして動くのか試してみる 上のが今まで使っていた.NET Framework、下のが.N…

C# .NET FrameworkでもCPUの拡張命令SIMDと並列処理で、画像の減色処理速度40倍

2020/03追記 処理速度40倍ってあるけど、実際はそんなに速くなっていない可能性 gogowaten.hatenablog.com MathクラスのPowを使わないで普通に掛け算すれば、30~80倍くらい速くなる。逆に言うとPowを使うと遅くなる。SIMDでの処理ではMathPowを使っていない…

WPFのBitmapSourceVisualizer、画像の保存とクリップボードへコピーできるようにした

gogowaten.hatenablog.com これの続き dllの名前を変更した、MyVisualizerからBitmapSourceVisualizer 画像を保存できるようにした 画像をクリップボードへコピーできるようにした 画像の表示方法を選択出るようにした、実寸とウィンドウに合わせる これで十…

WPFのBitmapSource用のデバッガービジュアライザー作ってみた

WPFのBitmapSource用のデバッガービジュアライザー作ってみた ダウンロード先 MyVisualizer.zip 展開してMyVisualizer.dllを ドキュメントフォルダにある使いたいバージョンのVisual StudioのVisualizersフォルダに入れるだけ ユーザー名がwatenでVisual Stu…

PDFをjpegにするアプリ、pngにもできるようにした

gogowaten.hatenablog.com の続き png形式でも保存できるようにした PDFtoJPEG 1.4 ダウンロード先 PDFtoJPEG_1.4.zip PDFファイルは www.maff.go.jp 野菜の輸入動向(月間速報)https://www.maff.go.jp/kanto/seisan/engei/yasai-yunyu/attach/pdf/index-19…

PDFをjpegにするアプリ、jpegのZipにできるようにした

昨日の gogowaten.hatenablog.com 続き PDFファイルをjpegに変換したものを、1つのzipファイルにできるようにした ダウンロード PDFtoJPEG_1.3.zip PDFファイルは www.maff.go.jp 野菜の輸入動向(月間速報)https://www.maff.go.jp/kanto/seisan/engei/yasa…