C# モザイク アルゴリズムの実装

C# モザイク アルゴリズムの実装

視聴者の要望に応えて、今日は C# モザイク アルゴリズムの実装についてお話します。古いルール、理解しようとしないで、ただ見て、なぜかと聞かないで

多くの画像処理アルゴリズムは、実際には原理的には非常に単純です。 難しいのは、それを実装するためのアルゴリズムの書き方にあり、実装されたアルゴリズムを最適化する方法はさらに困難です。私は常に、プログラマーの効率はプログラムの効率よりも重要だと信じていますが、撮ったデジタル写真の処理を待っている間にこっそりとミルクティーと宝くじを買いに出かけ、戻ってきたら計算がまだできていないことに気づくのは耐え難いことです。

C# のモザイク アルゴリズムは非常にシンプルです。簡単に言うと、画像を val * val ピクセルのいくつかの小さなブロックに分割し (端に小さなブロックが散在する場合がありますが、アルゴリズム全体には影響しません)、各小さなブロックの色は同じです。便宜上、領域の左上隅にある点の色を使用することもできます。もちろん、ブロックの中央の点の色を取ったり、ブロック内のランダムな点の色を代表として取るなどの方法もあります。

次の図は、val=2 を取った結果を示しています。

元の画像ピクセル
ABCDEFG
ヒクルムン
質問
型番
2345678

モザイク処理後
AACCEEG
AACCEEG
ああ
ああ
2244668

原理はそれほど単純です。具体的な実施方法は各人の思考習慣によって異なります。私の考えは次のとおりです。

y (現在の高さ) が val の整数倍の場合:
現在の行の各ポイント x をスキャンします。x が val の整数倍でもある場合は、x、y の現在のカラー値を記録します。x が val の整数倍でない場合は、最後に記録されたカラー値を使用します。
y が val の整数倍でない場合:
とても簡単です。前の行をコピーするだけです。

簡単に言えば、線を使って表面を導き、最終的には誰にもはっきりと見えないようにすることです。

以下はソースコードです。アルゴリズムを書くのは得意ではありませんが、スムーズに実行できるシンプルなバージョンを書くことなら時々できます。お役に立てるとは思いませんが、誤解を招かなかったことを願っています。

  1. パブリック静的 BitmapKiMosaic(ビットマップ b、int val)
  2. {
  3. if(b.Equals(null))
  4. {
  5. null を返します。
  6. }
  7. intw = b.Width ;
  8. inth = b .高さ;
  9. 整数stdR、stdG、stdB;
  10. stdR = 0 ;
  11. stdG = 0 ;
  12. stdB = 0 ;
  13. ビットマップデータsrcData = b.LockBits (newRectangle(0,0,w,h),
    ImageLockMode.ReadWrite、PixelFormat.Format24bppRgb);
  14. 安全でない
  15. {
  16. バイト* p =(バイト*)srcData.Scan0.ToPointer();
  17. ( inty = 0 ;y < h ;y++)の場合
  18. {
  19. ( intx = 0 ;x < w ;x++)の場合
  20. {
  21. y%== 0 の場合
  22. {
  23. x%== 0 の場合
  24. {
  25. stdR = p [2]; stdG = p [1]; stdB = p [0];
  26. }
  27. それ以外
  28. {
  29. p[0]=(バイト)stdB;
  30. p[1] = (バイト)stdG;
  31. p[2]=(バイト)stdR;
  32. }
  33. }
  34. それ以外
  35. {
  36. //前の行をコピー
  37. バイト* p pTemp =p-srcData.Stride;
  38. p[0]=(バイト)pTemp[0];
  39. p[1]=(バイト)pTemp[1];
  40. p[2]=(バイト)pTemp[2];
  41. }
  42. 3 です。
  43. }//終了
  44. p+=srcData.Stride-w*3;
  45. }//終了
  46. b.UnlockBits(srcData);
  47. }
  48. b を返します。
  49. }

上記はC#モザイクアルゴリズムの紹介です

<<:  F#の並列ソートアルゴリズムは実装が簡単

>>:  C# 遺伝的アルゴリズム学習ノート

ブログ    
ブログ    

推薦する

...

人工知能は将来の戦争を防ぐことができるのか?

ロヒット・タルワール[[430155]]米陸軍兵士が発射後、管制室から全長14フィートのシャドウ監視...

チャットボットをよりエレガントに設計する方法

AI アルゴリズムの人気により、近年会話型ロボットの人気が高まり、あらゆる分野で推進され、使用されて...

...

一般的な機械学習アルゴリズムの包括的なリスト

1. 学習方法1.1 教師あり学習1.2 教師なし学習1.3 半教師あり学習1.4 強化学習2. ア...

...

動画注釈が機械学習モデルのパフォーマンスを向上させる方法

機械学習は近年、特にコンピュータービジョンとビデオ分析の分野で目覚ましい進歩を遂げています。この進歩...

ロボット開発で人気の言語:不滅のJava、不滅のC/C++、そして新興のPython

プログラミング言語は流行ったり廃れたりするものですが、Java と C/C++ は変わりません。 [...

5G+ロボットが炭鉱のインテリジェント開発を加速します!

最近、山西省太原でインテリジェント炭鉱・安全生産フォーラムが盛大に開催され、炭鉱のインテリジェント建...

機械学習は、モノのインターネットの発展に欠かせない未来となるだろう

近年、機械学習ほどモノのインターネットの急速な成長を牽引したものはほとんどありません。人間の創造性を...

毎日 12 時に出勤し、ガールフレンドと過ごすために定時に退勤するプログラマーである私が、なぜいつも残業するのでしょうか。 !

社内で髪の多いプログラマートップ3の1人として、私はいつも髪に頼って残業しています。若い人たち、なぜ...

...

マスク氏、マイクロソフトを非難「OpenAIはあなたのツールではない」

この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...

Huyaは人間とシーンの分離技術を使用して、顔を覆わずにスマートな弾丸スクリーンを作成します

【元記事は51CTO.comより】 「(段)幕」という言葉はシューティングゲームから生まれたもので、...