午後わてんのブログ

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

画像処理

カラー画像を1bpp(1bit)白黒画像に変換アプリver1.1、閾値の自動設定、大津の二値化でできたかも

大津の二値化を使った白黒画像できたかも 今回のアプリのダウンロード先 github.com 1年前に作った カラー画像を1bppの白黒2値化するアプリは 白黒の閾値は手動で設定か、画像全体の輝度平均で指定していたのを 自動で設定する、自動1と自動2を付け足した …

LINQのMin、Max、Average使ってみたけど遅い、画像処理には向かない

LINQはとても便利だけど場合によっては遅い 今回試したのは画像処理で使うbyte型配列 ここからRGBそれぞれの配列と最低値、最大値、平均値を求めたい これらは減色処理で使う ピクセルフォーマットがRGBの場合はRGBの順番で並んでいる [R,G,B,R,G,B…] 変数名…

WPFだけどRotateTransformを使わずに画像の回転表示をしてみた

今回のアプリのダウンロード先 github.com WPFだけどRotateTransformを使わずに画像の回転表示をしてみた 処理2 元のピクセル座標を回転行列で変換しただけ 処理3 処理2の位置調整版 処理4 回転後のピクセル座標を回転行列の逆行列で変換 処理5 処理4+ピク…

BitmapSourceでの画像処理速度、unsafe、ポインタ、ビルドモード

アプリダウンロード先 github.com WPFのBitmapSourceの画像処理速度向上するためにいろいろ試してみた 初めて使ったunsafeでポインタが一番効果があった 画像処理の内容は色の反転、RGBそれぞれの値を逆にするだけのもので 50だったら255-50=205にする 単純…

画像処理中のプログレスバー更新とキャンセルボタンで中止

テストアプリダウンロード先 github.com 時間のかかりがちな画像処理のときに プログレスバーの更新 処理のキャンセル 動作の様子 できた! 最初に作る時には前回の gogowaten.hatenablog.com 処理中に進捗率表示とキャンセルボタンで中止はasync、await、Ta…

Lanczos法で画像の拡大してみた

Lanczos法で画像の拡大 前回のバイリニア法とは重みの付け方が違う sinc関数ってのを使っているらしい sinc関数 - Wikipedia https://ja.wikipedia.org/wiki/Sinc%E9%96%A2%E6%95%B0 内挿 - Wikipedia https://ja.wikipedia.org/wiki/%E5%86%85%E6%8C%BF 普…

バイキュービック法で画像の拡大してみようとしたけど、難しすぎた

バイキュービック法で画像の拡大してみようとしたけど、できたようなできていないような感じになった、難しすぎた 2021/04/23追記 やっぱり間違っていたので書き直した gogowaten.hatenablog.com 2021/04/23追記ここまで 前回のバイリニア法は 近くの上下左…

バイリニア法で画像の拡大縮小

バイリニア法(bilinear interpolation)をWPFとC#で書いてみた だいたいあっていると思う 2021/04/15追記 間違っていたので書き直した(再挑戦した)のが gogowaten.hatenablog.com これはかなり正解に近いと思う(フラグ) 2021/04/15追記ここまで 距離に応じて…

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

新しく書き直した gogowaten.hatenablog.com ↑の記事のほうがいい ここから↓はいまいち 最近傍補間法(ニアレストネイバー法、nearest neighbor interpolation)を使って画像の拡大縮小をWPFとC#で WPFで最近傍補間法を使った拡大縮小をするだけなら、RenderTr…

Owner指定するタイミング、別WindowとMainWindowとの連携、カラーピッカーを追加してパレットの色変更

カラーピッカーを追加してパレットの色を変更できるようにした。 ダウンロード先 github.com 別のWindowとMainWindowとの連携する場合に、Ownerの指定するタイミングを間違えて、めんどくさいことになったはなし gogowaten.hatenablog.com パレットを使った…

パレットを使った減色で誤差拡散

減色パレットで誤差拡散 ダウンロード先 github.com できた いつもの画像を 4色減色で 誤差拡散無し 誤差拡散あり 誤差拡散はFloydSteinberg式 8色 倍の色数になったけど大差ない見た目 8色 最多ピクセル数を分割Cubeに選択して グラデーションが得意なパレ…

処理速度比較、画像の使用色数を数える、重複なしのリストのHashSetも速いけど配列+ifも速かった

ダウンロード先 github.com 画像の使用色数を数える 画像ファイルからのBitmapSourceからCopyPixelsして取得するbyte[]を使って 重複しない色の配列やリストを作って数える方法で処理速度比較してみた 条件 BitmapSourceのPixelFormatはPbgra32限定、アルフ…

分割する場所の選択、メディアンカットで減色パレット作成

続き ダウンロード先 github.com Cubeをどこで分割するのかを4種類試した 辺中央 CubeのRGB3辺の中で一番長い辺を選択、辺の中央で分割 中央値 一番長い辺を選ぶのは↑と同じ、辺の要素の中央値で分割 最小分散p 分散値が最大の辺を選択、分割後の2辺の分散が…

分割するCubeの選択、メディアンカットで減色パレット

おとといからの続き ダウンロード先 github.com 今回は分割するCubeの選択法を変えると パレットはどうなるのか試してみた 選択方法は5つ 最大長辺 最も長い辺(軸)を持つCubeを分割対象にする 最大ピクセル数 ピクセルが最も多いCube 最大体積 Cubeの体積が…

Cubeから色の選び方、メディアンカットで減色パレット

gogowaten.hatenablog.com 2週間前の続き ダウンロード先 github.com メディアンカット法で分割したCubeからの色の選び方いろいろ試してみた Pan1から6が選び方の違いで Pan1 Cubeにあるピクセルの平均色 Pan2 CubeのRGBそれぞれの中央値(メディアン) Pan3 C…

Parallelクラスを使ってもっと速く減色

昨日処理時間短縮の続き Parallelクラスを使ってもっと速く Parallelを使ってforを書くとそのループは並列処理される! なのでCPUコア数に比例して速度が上がるはず お店でいうと レジが1個だったのがたくさん増えた感じ 従業員(CPU)に余裕があれば可動する…

減色変換一覧表を使って処理時間を短縮してみた

昨日の手抜き法でパレット作成処理の時間は問題なくなったので次は 減色変換の処理時間を短縮 前の gogowaten.hatenablog.com 単純減色(ポスタライズ?)試してみた、WPFとC# ( ソフトウェア ) - 午後わてんのブログ - Yahoo!ブログ https://blogs.yahoo.co.j…

手抜きで時間を短縮、k平均法を使った減色パレットの作成

k平均法を使った減色パレットの作成時に手抜きをして処理時間短縮 手を抜くのは重要 どこまで手を抜いても気づかないかを確かめてみるアプリ作った、確かみてみろ! 手抜きの方法は簡単で調査するピクセル数に上限を付けるだけ 上の場合だと 手抜きパレット…

色の距離は難しい、いくつか試したけどわからなかった

色の距離 減色処理で指定したパレットの色に変換する時 パレットの中から一番近い色を探す必要がある パレットがこの3色の時 この色はどの色に近いのか 僕の目から見ると が一番近い こういう処理 今まではこの処理をRGBの値からユークリッド距離で行ってい…

指定色で減色+誤差拡散、減色結果を他のアプリと比較してみた

指定した色に減色する時に誤差拡散を使う この前はメディアンカット法を使って選んだ色をパレットの色にして その色を使って普通に減色していた 今回は誤差拡散も使って減色 いつもの画像を8色に減色 できた!…と思う これだけだと正解なのかわかんないので …

作ったアプリの実行ファイルがウイルスだと言われるw

GitHubにアプリの実行exeファイルをアップロードして、これをダウンロードするとウイルスだと誤判定され警告が出る ダウンロード時にウイルス判定されて検疫された記録 ヤフーボックスにアップロードしたファイルは普通にダウンロードできるし実行もできたの…

メディアンカット法で色の選択、減色してみた、難しい

メディアンカット法で減色してみた ダウンロード先 github.com 理解できていないから間違っているかも それでもいい結果が得られた いつもの元画像を8色へ いいねえ ピクセル数が最大のCubeを優先分割 もう一つが 長辺が最大のCubeを優先分割のパレット この…

k平均法で減色してみた、設定と結果と処理時間

減色用パレットをk平均法で作成 ダウンロード先 github.com 今までの単純減色だと使われない色が出てきてしまう RGB2階調で8色は 白、黒、赤、緑、青、黄色、水色、赤紫なので ■■■■■■■■ 赤や緑がない画像を変換すると 赤、緑、黄色、赤紫の4色は使われない …

単純減色と誤差拡散とディザリング

今回のアプリ ダウンロード先 ここの20180302_.zip github.com 前回の 単純減色に誤差拡散でディザリング gogowaten.hatenablog.com 単純減色(ポスタライズ?)試してみた、WPFとC# https://blogs.yahoo.co.jp/gogowaten/15388558.html これと gogowaten.hate…

HSVのグラデーションの画像を作成して保存するアプリ作ってみた

以前作ったHSVとRGBの相互変換のdllを使って HSVのグラデーションの画像を作成して保存するアプリ作ってみた ダウンロード先 github.com 動作 修正する2018/03/03以前なので色相360が無彩色になっている 色相90の画像 こういう画像を作成するときは 色相を90…

単純減色(ポスタライズ)にオーダード(パターン)ディザリング、WPFとC#

単純減色(ポスタライズ)にオーダード(パターン)ディザリングしてみた つまり gogowaten.hatenablog.com WPF、画像をディザパターンを使って8色に減色して保存するアプリ ( ソフトウェア ) - 午後わてんのブログ - Yahoo!ブログ https://blogs.yahoo.co.jp/go…

単純減色(ポスタライズ?)試してみた、WPFとC#

今回は gogowaten.hatenablog.com WPF、普通の写真画像を8色に減色 ( ソフトウェア ) - 午後わてんのブログ - Yahoo!ブログ https://blogs.yahoo.co.jp/gogowaten/15342796.html この記事の続き 8色に減色だったのを27色,64,512、…ってしてみた 8色のとき…

8色に減色でも誤差拡散法を試してみた

昨日の続き カラー画像で誤差拡散 アプリダウンロード先 ここの20180223_.8.zipがそれ github.com できた 左から 元の画像 右隣への誤差拡散法 FloydSteinberg FloydSteinberg(蛇行) SierraLite JaJuNi Atkinson 以前試したときはうまく書けなかったけど、昨…

FloydSteinberg他いくつかの誤差拡散を試してみた、白黒2値をディザリング

昨日の続き いくつかの誤差拡散法を試してみた アプリダウンロード先 ここの20180222_.2.zipがそれ github.com 左から順に 元のグレースケール画像 右隣だけに拡散(昨日の) FloydSteinberg式を小数点以下切り捨て FloydSteinberg式を普通に SierraLite JuJuN…

誤差拡散法を使ってディザリング、右隣だけへの誤差拡散、グレースケール画像だけ

誤差拡散法を使ってディザリング その中でも一番単純なもの 誤差を右隣のピクセルに拡散させるもの さらにかんたんにするためにグレースケールの画像を使って試した アプリダウンロード先 github.co ここの20180221_.zipがそれ これが元画像 変換結果 閾値は…