午後わてんのブログ

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

#ソフトウェア

GitHubのTagとRelease機能を使ってみた

目的はこの前回に作ったUserControlのDLLファイルの公開 こうなった、ファイルは矢印の先にあるControlLibraryCore20200620.7z アドレスをコピペしてみると https://github.com/gogowaten/userControl/releases/download/v1.0.1/ControlLibraryCore20200620.…

いろいろな局所範囲しきい値で画像の2値化を試してみた

局所範囲(注目ピクセルの近傍ピクセル)からしきい値を計算して2値化、この前は平均値をしきい値にしたものだった。今回はそれ以外の計算方法をググって、いくつか試してみた 使ったアプリは 20200422_局所しきい値で2値化.zip github.com 画像ファイルドロッ…

ガンマ補正してから黒灰白の3色に減色+ディザリングしてみた、グレースケール画像

前回の続きで、今回は3色に減色、3色は0, 127, 255 ディザリングはいつもの誤差拡散FloydSteinberg方式 github.com 今回のアプリ ダウンロード:20200507_ガンマ補正してから3色誤差拡散.zip 今回のアプリ 画像ファイルドロップで画像表示、カラー画像もPixe…

ガンマ補正してから画像の2値化ディザリングしてみた

2値化ディザリングするときにガンマ補正をしないと、元の画像より明るい画像になる 輝度値がそれぞれ 0(黒) 255(白) の2値を使って、その中間になる128(灰色)の画像をディザリング処理すると 128(灰色) 2値化ディザリング 元の画像よりかなり明るく見える、…

局所的平均値をしきい値として2値化、局所範囲ピクセルの合計は差分計算で高速化

2値化するときに使うしきい値の計算を、注目ピクセルの周囲のピクセルの値を使ってする 範囲は1指定なら3x3ピクセル、2なら5x5、3なら7x7とするようにして 計算は平均値にしてみた 範囲1で注目ピクセルの座標が(1,1)のとき 3x3ピクセルの平均値は162.2 = (14…

減色テスト、グレースケール版その4、誤差拡散すると誤差蓄積されすぎて色が流れたようになる問題

誤差拡散法 誤差蓄積 誤差拡散法を使って減色できるようにした、方式はフロイドスタインバーグ 20200327_減色テストグレースケールvar.1.3.zip github.com 誤差蓄積されすぎ問題 この画像を2色に減色する、減色用のパレットを作成 2色は161と97が選ばれた、…

減色テスト、グレースケール版その3、Kittlerの方法でCube分割を追加した

github.com 20200327_減色テストグレースケールver.1.2.zip パレットの色を昇順ソートできるようにした Cube分割方法にKittlerの方法を追加した チェックを入れたパレットはパレットリストクリアしても残すようにした Kittlerの方法 大津の方法と比べてみる …

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

github.com 20200324_画像を白黒2値に変換ver.1.2.1.zip しきい値設定にこの前テストしたKittlerの方法を追加した 普通かな、大津の方法とそれほど変わらない 明るい画素(253以上)が多い画像 Kittlerの方法だとしきい値は249とかなり大きくなった 0~255まで…

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…

クリップボードの中にある画像をWPFで取得してみた、Clipboard.GetImage()だけだと透明になる

WPFのClipboardはイマイチな感じで、画像を取得するにはGetImage()を使うんだけど、普通の画像が完全透明になってしまうことがある 透明にならないように取得するには blogs.yahoo.co.jp こちらで紹介されているように Streamに一時保存して読み直すか、問答…

最近傍補間法で画像の拡大縮小試してみた、2回め

ようやく納得できるまでになった 変換後の座標をxとして、xが参照するべき変換前座標は (x + 0.5) * (変換前ピクセル数 / 変換後ピクセル数) これの小数点以下切り捨てた値 例えば倍率が3で、変換前画像の横ピクセル数が4のときは 変換後画像の横ピクセル数…

2つの画像が同じなのか簡易判定するアプリ作ったけど、なんか違う

比較する画像の追加は、ウィンドウの左右それぞれに画像ファイルをドロップするか、クリップボードから追加したいときは上にあるボタンで追加できる。あとは2つある判定ボタンのどちらかを押すだけ この結果は 比較判定方法は 画像は元の画像のピクセルフォ…

DrawLinesで直線の描画と、その頂点を表示してマウスドラッグ

Windows FormアプリをVisual Basicで マウスドラッグでラベルコントロールの移動と直線の描画 2014/12/19は5年前 gogowaten.hatenablog.com このときと同じなんだけど、書き直してみた 直線はGraphicsクラスのDrawLinesを使って描画 DrawLinesはPointの配列…

3x3のメディアンフィルタの高速化をC#で書いてみた

3×3メディアンフィルタの高速アルゴリズム https://www.ipsj.or.jp/award/9faeag0000004f1r-att/LI_9.pdf ここを見てC#で書いて実行した結果 前回4.39秒だったのが0.20秒になった 439/20≒22で、約22倍も速くなったことになる、すごい 使った画像は 2048x1…

メディアンフィルタで画像のノイズ除去試してみた、WPF、C#

メディアンフィルタでごま塩ノイズ除去 全体的にぼやけてしまうけどごま塩ノイズを除去できた メディアンフィルタ 注目セルとその周囲8近傍の値の中央値を 注目セルの新しい値にする エクセルには中央値を求めるMEDIAN関数がある 便利だなあ 色を付けてみる…

画像にノイズ付加するアプリ、カラー版

画像にノイズ付加するアプリ、一様分布乱数から正規分布乱数生成、エクセルのNORMINV関数で正規乱数 ( ソフトウェア ) - 午後わてんのブログ - Yahoo!ブログ https://blogs.yahoo.co.jp/gogowaten/15961286.html この前はグレースケール画像だったのをカラー…

画像にノイズ付加するアプリ、一様分布乱数から正規分布乱数生成、エクセルのNORMINV関数で正規乱数

画像にノイズ付加してみた ピクセルの輝度値に乱数を加えればノイズになる 一様分布になる乱数と正規分布になる乱数、正規乱数 一様分布 エクセルのRAND関数の結果1000個のヒストグラム どの範囲もだいたい同じ個数になっている、こういうのを一様分布ってい…

画像のエッジ抽出、ラプラシアンフィルタ

画像のエッジ抽出、ラプラシアンフィルタ、ラプラシアンオペレータ ラプラシアンフィルタでエッジ抽出した結果 色の境界、輪郭を白で表現する感じ 元の画像 この前のガウスぼかしと同じようにカーネル(マスク、オペレータ)があって この2つがよく使われるみ…

ガウス関数からカーネル作成、標準偏差とカーネルサイズ、グレースケール画像のぼかし処理

画像のぼかし処理で使うカーネルをガウス関数から作成してガウスぼかし 標準偏差の指定とぼかし具合 カーネルサイズは3x3で標準偏差を0.1、0.5、1.0 標準偏差=0.1だと全くぼやけない、0.5でほんの少しぼやけたかなくらいで、1.0だとぼやけたのがはっきりわか…

エクセルで2次のガウス関数(確率密度関数)、正規分布関数のNORMDIST

前回からの続き 2次の確率密度関数(ガウス関数)は1次同士を掛け算したものでいいらしい 変数xと変数yだった場合 こうなるみたい エクセルならNORMDIST関数2つの掛け算になって =NORMDIST*NORMDIST これだけ 標準偏差=1のときx,yが-2~2までのガウス分布 …

エクセルで1次のガウス関数(確率密度関数)、正規分布関数のNORMDIST

1次元のガウス関数をエクセルで 前回の画像のぼかし処理で使った 3x3のガウスぼかしのカーネル ガウシアンフィルタとかマスクとかも呼ばれる これ 等高線のグラフにして横から見る 上から 5x5のカーネルの場合 中心の注目ピクセルに近いほど重みが増す それ…

画像のぼかし処理、8近傍平均とガウスぼかし、グレースケールで処理

8近傍平均は移動平均フィルター ガウシアンフィルタはガウスぼかし 上下左右は4近傍 呼び方が安定しない 8近傍はこの前の上下左右から参照ピクセルが増えただけ、斜め方向の4ピクセルを加えた9ピクセルの合計の平均値を新しい値にする ガウシアンは中心の注…

画像ぼかし処理、普通のぼかし処理では画像によってイマイチな結果になる

カラー画像のぼかし処理するアプリ 元画像 これを ぼかし処理(色の補正なし) ぼかし処理(色の補正あり) 補正の有無での違いはこの画像では感じられないねえ ぼかし処理での色の補正 gigazine.net ぼかし処理でググっていたらこんな記事を見かけた なんでも普…

画像のぼかし処理、注目ピクセルとその上下左右の平均値に変換

ウィンドウに画像ファイルドロップで 画像が表示される カラー画像もグレースケールで表示される ぼかし上下左右ボタンを押すとぼかし処理される 処理の重ねがけ 5回ぼかし処理したところ 元画像とぼかし処理後画像の切り替え 画像を左クリック押している間…

画像の色相をバブルチャート風に表示するアプリ

シェフの気まぐれ極座標バブルチャート風画像の色相分布図 できた なまえがわからん 値に応じて●の大きさと位置を変えているからバブルチャートはあっていると思う 前回は扇形だった 値の大きさを円の中心からの距離(半経)にして扇形のグラフにしていた 円の…

Visual Studio 2019 Communityをインストールした

起動直後のスタート画面、ずいぶんシンプルになった 最近開いた項目には2017で開いていたものが並んでいる 2017のスタート画面、こっちのほうがいいかなあ、チュートリアルはあったほうがいいと思うのは、初めて触ったVisual Studio 2010にあったものが素晴…

画像の色相を円形ヒストグラム、扇形(パイ型)グラフで表示するアプリできた

できた アプリのウィンドウに画像ファイルをドロップで 画像とその色相のグラフが表示される 色相範囲分割数 12分割は360/12=30度区切り 360分割、こっちのほうがより正確なはず、だけど見た目的には72くらいが面白いかな 色相がない無彩色画像は グラフが…

WPFで図形の円弧🌙、🍕扇形パイ形、🍩ドーナツ型(アーチ形)を表示してみた、ArcSegment

ArcSegmentを使って円弧、パイ形、ドーナツ型(アーチ形)を表示してみた 名前は円弧と扇形はいいと思うけど ドーナツ型なのかアーチ形なのか、また別の名前があるのかも でもがいいなあってことで関数名はDonutにした デザイン画面、MainWindow.xaml MainWind…

切り抜きClip、GeometryGroupとCombinedGeometry

最大3つのGeometryを組み合わせてClip GeometryGroupではFillRule CombinedGeometryではGeometryCombineModeをいくつか組み合わせて 四角形をClip表示してみた コントロール要素のClipプロパティにGeometryを指定すると切り抜き表示になる アプリ自身のClip…