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

ブログ    
ブログ    
ブログ    

推薦する

マイクロソフトの面接アルゴリズムに関する 4 つの質問

(1)要素が0から65535までの任意の数値であり、同じ値が繰り返し出現しない整数列。 0 は例外で...

初心者に適した機械学習アルゴリズムの選び方

この記事の主な対象読者は、機械学習の愛好家やデータサイエンスの初心者、そして機械学習アルゴリズムを学...

SGDの素晴らしさはディープラーニングの重要性をもたらす

ビッグデータダイジェスト制作7月、ニューヨーク大学(NYU)の博士研究員であるナオミ・サフラ氏は、「...

数学的論理とコンピュータプログラムコードの深いつながり:互いの鏡像

DNAの二重らせん構造やブラックホールの存在など、いくつかの科学的発見は何か新しいことを明らかにする...

北京、自動運転路上試験の新規則を発表、有人試験も可能に

最近、北京市交通委員会は新たに改訂された「北京市自動運転車両路上試験管理実施規則(試行)」を発行し、...

【受賞討論会】「スマート運用・保守」がトレンドに。運用・保守エンジニアは人工知能に置き換えられるのか?

特にインフラとして重要な役割を担うデータセンターにおいては、運用・保守は決して軽視できるものではなく...

ニューラルネットワークのトレーニングでは、エポック、バッチサイズ、反復の違いがわかりません

[[204925]]きっと、コンピューターの画面を見て頭を悩ませ、「なぜコードでこの 3 つの用語を...

自動化の方程式: 現代の職場における AI、ロボット工学、人間のスキルのバランス

人工知能 (AI) 技術が職場に統合されることにより、仕事の性質が急速に変化し、人間と機械の関係が再...

ジャック・マー、孫丑樹、劉強東、周紅一はいかにして「スマート時代」に突入したのか?

近年、人工知能は大手企業の重要な研究分野となり、「政府活動報告」にも記載されるようになりました。これ...

機械学習情報工場になるためには、企業はリーン製造からこれらの6つの基本を学ぶ必要がある

【51CTO.com クイック翻訳】調査機関Forrester Researchが最近発表した調査レ...

2022 年に注目すべき主要なエッジ AI トレンド

1956 年に大学の研究分野として取り入れられて以来、AI は楽観的な時期と悲観的な時期を同程度に...

データ分析 VS アルゴリズムモデル、どのように作業を分割し、効率的に連携するか?

[[438791]]この記事はWeChat公式アカウント「地道学院」から転載したもので、著者は地道...

Pandasの魅力:データ処理から機械学習まで

パート01、 シリーズとデータフレーム: Pandas のコアPandas の 2 つの主要なデータ...

テンセントは大人のプレイヤーから厳しい批判を受けた!実名認証だけでは不十分、顔認証も必要

[[422724]]今学期の一番の話題は、未成年がゲームをプレーできなくなった平日です!これにより、...

AIの限界を理解することがその可能性を実現する鍵となる

人工知能 (AI) は、デジタル顧客サービス アシスタント、自動運転車、無人倉庫のロボットなど、多く...