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

ブログ    
ブログ    
ブログ    
ブログ    
ブログ    
ブログ    

推薦する

私が人工知能に興味がない理由

私がビジネスを始めたいと思っていると聞いて、いくつかの「馬鹿げた」アイデアをくれた人もいました。彼ら...

AIがあなたをビデオから消去しました!効果はシルキーで跡が残りません

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

AI ワールド: 2018 年に注目すべき 8 つの AI トレンド

計算の観点から見ると、ビッグデータ分析のトレンドは流れ星のように消えることはありません。データ量が増...

RoboFusion: SAM による堅牢なマルチモーダル 3D 検査

この記事は、Heart of Autonomous Driving の公開アカウントから許可を得て転...

AIと宇宙技術が日常生活をどう改善するか

衛星から都市計画まで、人工知能の進歩は新たな洞察をもたらしています。 [[270081]]宇宙技術と...

DeepMindの創設者:生成AIは単なる過渡期であり、将来AIは無料になり、インタラクティブAIは人類を変えるだろう

DeepMindの共同創設者であり、Inflection AIの創設者でもあるムスタファ・スレイマン...

...

...

機械は倫理的な判断を下せるのか?

ロボットや機械が下す決定は必ずしも道徳的に正しいとは限りません。テクノロジー企業が機械倫理に注目する...

シティグループは5年以内に1万人の雇用を人工知能で置き換える計画

[[233047]]フィナンシャル・タイムズによると、シティグループは5年以内に投資銀行部門の技術・...

これらは、データ構造とアルゴリズムにおける動的プログラミングのコツです。

[[442276]]動的計画法理論の基礎動的プログラミングとは何か動的プログラミング (英語: D...

...

Huawei の徐文偉氏: インテリジェントな未来を構想する (HC カンファレンス PPT + スピーチ全文)

第3回HUAWEI CONNECT 2018が2018年10月10日に上海万博展示コンベンションセン...

快手八卦についての噂: TensorFlow と PyTorch の並列ボトルネックを打破する分散トレーニング フレームワーク

最近、KuaishouとETH Zurichはオープンソースの分散トレーニングフレームワークBagu...

GPT-4+Midjourney がコードなしで「Angry Pumpkin」を作成!実際の経験:閾値は低くなく、再現が難しい

市販の AI ツールを使えば、自分でコードを 1 行も書かずに完全な「Angry Birds」を作れ...