自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

實現(xiàn)C#馬賽克算法

開發(fā) 后端 算法
本文介紹C#馬賽克算法很簡單,說白了就是把一張圖片分割成若干個val * val像素的小區(qū)塊,每個小區(qū)塊的顏色都是相同的。

應聽眾點播要求,今天講講C#馬賽克算法的實現(xiàn)。老規(guī)矩,不求甚解,只許看不許問為什么

很多圖片處理的算法從原理上講其實非常簡單,難點往往在如何去寫算法實現(xiàn)它,更加難的就是如何去優(yōu)化實現(xiàn)的算法。雖說我一向認為程序員的效率比程序的效率更重要,但為了等處理一張自己拍攝的數(shù)碼照片,溜出去買杯奶茶順便再買張彩票回來發(fā)現(xiàn)還沒算好,無論如何都是不能忍受的。

C#馬賽克算法很簡單,說白了就是把一張圖片分割成若干個val * val像素的小區(qū)塊(可能在邊緣有零星的小塊,但不影響整體算法),每個小區(qū)塊的顏色都是相同的。為了方便起見,我們不妨讓這個顏色就用該區(qū)域最左上角的那個點的顏色。當然還可以有其他方法,比如取區(qū)塊中間點的顏色,或區(qū)塊中隨機點的顏色作代表等等。

下面的示意圖就是取val=2的結(jié)果。

原圖像素
ABCDEFG
HIJKLMN  
OPQRSTU  
VWXYZ01  
2345678  

馬賽克處理后
AACCEEG
AACCEEG
OOQQSSU
OOQQSSU
2244668

原理就是那么簡單。具體實現(xiàn)就看各人的思維習慣了。我的想法是:

當y(當前高度)是val的整數(shù)倍時:
 掃描當前行中的每一點x,如果x也是val的整數(shù)倍,記錄下當前x,y的顏色值;如果x不是val的整數(shù)倍,則沿用最近一次被記錄的顏色值。
當y不是val的整數(shù)倍:
 很簡單,直接復制上一行。

簡單的說就是以線帶面,最終實現(xiàn)讓大家都看不清楚

下面就是源代碼。寫算法不是我的強項,不過偶爾勉為其難的寫個可以跑跑的不求甚解版還是可以做到的,不指望可以幫到你,只希望沒有誤導你。

  1. publicstaticBitmapKiMosaic(Bitmapb,intval)  
  2. {  
  3. if(b.Equals(null))  
  4. {  
  5. returnnull;  
  6. }  
  7. intw=b.Width;  
  8. inth=b.Height;  
  9. intstdR,stdG,stdB;  
  10. stdR=0;  
  11. stdG=0;  
  12. stdB=0;  
  13. BitmapDatasrcData=b.LockBits(newRectangle(0,0,w,h),
    ImageLockMode.ReadWrite,PixelFormat.Format24bppRgb);  
  14. unsafe  
  15. {  
  16. byte*p=(byte*)srcData.Scan0.ToPointer();  
  17. for(inty=0;y<h;y++)  
  18. {  
  19. for(intx=0;x<w;x++)  
  20. {  
  21. if(y%val==0)  
  22. {  
  23. if(x%val==0)  
  24. {  
  25. stdR=p[2];stdG=p[1];stdB=p[0];  
  26. }  
  27. else  
  28. {  
  29. p[0]=(byte)stdB;  
  30. p[1]=(byte)stdG;  
  31. p[2]=(byte)stdR;  
  32. }  
  33. }  
  34. else  
  35. {  
  36. //復制上一行  
  37. byte*ppTemp=p-srcData.Stride;  
  38. p[0]=(byte)pTemp[0];  
  39. p[1]=(byte)pTemp[1];  
  40. p[2]=(byte)pTemp[2];  
  41. }  
  42. p+=3;  
  43. }//endofx  
  44. p+=srcData.Stride-w*3;  
  45. }//endofy  
  46. b.UnlockBits(srcData);  
  47. }  
  48. returnb;  

以上介紹C#馬賽克算法

【編輯推薦】

  1. 淺析C# ArrayList
  2. C#對象初始化學習總結(jié)
  3. 使用C#正則表達式匹配相關(guān)字符串
  4. C#改寫方法學習筆記
  5. 概述C#加框和消框
責任編輯:佚名 來源: 博客園
相關(guān)推薦

2022-09-07 08:37:34

DCGAN圖片AI

2020-12-09 14:18:46

AI 技術(shù)馬賽克

2018-07-03 08:50:12

人工智能深度學習CNN

2021-02-24 10:19:43

人工智能馬賽克

2015-04-30 10:29:32

WOC視頻會議優(yōu)化方案深信服

2020-12-02 15:07:23

算法開源AI

2021-05-31 10:30:46

密碼馬賽克工具

2018-09-12 16:30:45

Python編程語言馬賽克畫

2020-06-18 11:10:16

AI人工智能神經(jīng)網(wǎng)絡

2021-02-24 11:25:44

人工智能AI算法馬賽克

2011-08-18 15:56:03

深信服廣域網(wǎng)優(yōu)化

2023-11-22 11:20:38

2012-05-25 14:41:19

JavaScript

2021-03-01 11:37:31

人工智能PULSE

2012-03-16 16:33:35

視頻會議馬賽克深信服

2021-01-04 05:36:23

AI人工智能深度學習

2024-07-29 08:43:57

2015-10-15 17:31:14

微軟

2017-02-09 07:50:32

復原馬賽克科技新聞早報

2017-02-10 18:13:46

谷歌大腦人工智能
點贊
收藏

51CTO技術(shù)棧公眾號