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# 遺伝的アルゴリズム学習ノート

ブログ    
ブログ    
ブログ    

推薦する

...

大きな論争の中、ニューヨーク警察はロボット犬をボストン・ダイナミクスに返却した

ニューヨーク市警察は、その「ユートピア的」技術に対する激しい批判を受け、米国企業ボストン・ダイナミク...

人工知能と機械学習の違いと影響は何ですか?

人工知能と機械学習は、意思決定を行うコンピューターが部署や課全体に取って代わる世界を思い起こさせます...

ディープラーニングのこれらの概念をすべて理解できましたか? TF、TLT、TRT、DS

最近、NVIDIA GPU 製品や SDK を使用してディープラーニングを学習している学生に多く出会...

...

IoT セキュリティ: RSA 暗号化および復号化アルゴリズム

[[357279]] WeChat パブリックアカウント: コンピューターとネットワークのセキュリテ...

...

[インフォグラフィック] Google アルゴリズムの大幅な改善記録

Google 検索アルゴリズムは、歴史上最も先進的な数学工学アプリケーションです。毎日数十億件の検索...

...

人工知能は患者と医療業界の両方にどのような利益をもたらすのでしょうか?

人工知能は医療業界のシステムと方法を変えています。半世紀以上にわたり、人工知能とヘルスケアは一緒に発...

ByteDance、検索速度が8倍に高速化した最新の音楽検索システム「ByteCover2」をリリース

最近、ByteDance Volcano Voice Teamの最新の音楽検索システムであるByte...

低迷期を経て復活を遂げ、人工知能の波が押し寄せている!

[51CTO.comより引用] 近年、コンピュータ技術は急速に発展しており、人工知能はその操作性と...

マイクロソフトCEOナデラ氏との対談:AIは雇用を奪うよりも多くを創出する

マイクロソフトのCEOに就任して以来、サティア・ナデラ氏はマイクロソフトを改革した英雄とみなされてき...

...