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

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

推薦する

...

三国志を例に挙げて分散アルゴリズムについて語るのって、気楽なことでしょうか?

[[357046]]序文「三国殺し」は、中国の三国時代を背景に、身分を手がかりにカードを形にした人...

ディープラーニング プロジェクトをゼロから構築するにはどうすればよいでしょうか?詳細なチュートリアルはこちら

ディープラーニングに関する理論コースを受講した後、多くの人が独自のプロジェクトを構築してみることに興...

文勝ビデオの次の目的地であるメタはすでにビデオ制作を開始している

テキストガイドによるビデオツービデオ (V2V) 合成は、短編ビデオの作成や映画業界全体など、さまざ...

Nvidia は 5 億ドル相当の巨額注文を獲得しました。インドのデータセンターが H100/GH200 を一気に 16,000 台購入

Nvidia は大きな注文を受けるのでしょうか? 1 回のトランザクションには 16,000 個の ...

...

IBMとNASAが協力して地理空間AIモデルをオープンソース化し、気候科学の発展を目指す

8月4日、海外メディアFagen Wasanni Technologiesによると、IBMは最近、N...

...

Google のアルゴリズムにどんな恥ずかしいことが起こったのでしょうか?

ここには Google が意図的に行ったジョークがあると思われます。周知のとおり、Google の柱...

この AI はわずか 20 分で複雑な芸術作品を作成できます。 1080グラフィックカードが実行可能

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

なぜ人工知能には膨大な電力需要があるのでしょうか?

今日の人工知能 (AI) システムは、真の人間の知能を再現するにはまだ程遠い状態です。しかし、彼らは...

2020 年に慈善活動を変える主要なテクノロジー トレンドのリスト

チャリティーは常に実行速度が遅いことで知られています。慈善団体が社会、経済、環境の変化に対応するには...

グラフアルゴリズムシリーズ: 無向グラフのデータ構造

[[393944]]この記事はWeChatの公開アカウント「Beta Learns JAVA」から転...