成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

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

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

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

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

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

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

原圖像素
ABCDEFG
HIJKLMN  
OPQRSTU  
VWXYZ01  
2345678  

馬賽克處理后
AACCEEG
AACCEEG
OOQQSSU
OOQQSSU
2244668

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

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

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

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

  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. //復(fù)制上一行  
  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#對象初始化學(xué)習(xí)總結(jié)
  3. 使用C#正則表達(dá)式匹配相關(guān)字符串
  4. C#改寫方法學(xué)習(xí)筆記
  5. 概述C#加框和消框
責(zé)任編輯:佚名 來源: 博客園
相關(guān)推薦

2022-09-07 08:37:34

DCGAN圖片AI

2020-12-09 14:18:46

AI 技術(shù)馬賽克

2018-07-03 08:50:12

人工智能深度學(xué)習(xí)CNN

2015-04-30 10:29:32

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

2021-02-24 10:19:43

人工智能馬賽克

2020-12-02 15:07:23

算法開源AI

2021-05-31 10:30:46

密碼馬賽克工具

2018-09-12 16:30:45

Python編程語言馬賽克畫

2023-11-22 11:20:38

2012-05-25 14:41:19

JavaScript

2011-08-18 15:56:03

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

2020-06-18 11:10:16

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

2021-02-24 11:25:44

人工智能AI算法馬賽克

2021-03-01 11:37:31

人工智能PULSE

2021-01-04 05:36:23

AI人工智能深度學(xué)習(xí)

2012-03-16 16:33:35

視頻會議馬賽克深信服

2024-07-29 08:43:57

2015-10-15 17:31:14

微軟

2020-05-07 11:03:32

AI 馬賽克工具

2017-02-09 07:50:32

復(fù)原馬賽克科技新聞早報
點贊
收藏

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

主站蜘蛛池模板: 亚洲一区二区三区四区av | 中文字幕动漫成人 | 中文字幕日韩欧美一区二区三区 | 免费在线成人 | 爱爱视频网 | 一区二区三区久久 | 日本三级网站在线观看 | 少妇淫片aaaaa毛片叫床爽 | 亚洲国产精品成人无久久精品 | 日韩视频国产 | 久久久久久成人 | 亚洲国产一区二区三区 | 操久久| 亚洲第一成年免费网站 | 久日精品 | 亚洲精品视频在线看 | 欧美一级片黄色 | 波多野结衣亚洲 | 97精品国产 | 日韩精品一区二区三区中文字幕 | 亚洲一区二区久久久 | 成年网站在线观看 | 国产操操操 | 龙珠z国语版在线观看 | 日韩欧美一区在线 | 欧美在线视频一区二区 | 亚洲精品白浆高清久久久久久 | 国产日韩视频 | 国产女人叫床高潮大片免费 | 日韩精品久久久久 | 国产精品福利在线观看 | 国产精品一区二区久久久久 | 青青久视频 | 亚洲精品自在在线观看 | 成人在线精品视频 | 精品国产18久久久久久二百 | 一区二区高清在线观看 | av黄色片| 欧美日韩亚洲三区 | 天天爱天天操 | 蜜臀久久 |