<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當(dāng)前位置: 首頁 - 科技 - 知識百科 - 正文

        PhotoShop算法原理解析系列-像素化-碎片

        來源:懂視網(wǎng) 責(zé)編:小采 時間:2020-11-27 14:50:58
        文檔

        PhotoShop算法原理解析系列-像素化-碎片

        PhotoShop算法原理解析系列-像素化-碎片: 接著上一篇文章的熱度,繼續(xù)講講一些稍微簡單的算法吧。 本文來講講碎片算法,先貼幾個效果圖吧: 這是個破壞性的濾鏡,拿美女來說事是因為搞圖像的人90%是男人,色色的男人。 關(guān)于碎片濾鏡的原理,網(wǎng)絡(luò)上可找到的資料為:將圖像創(chuàng)建四個相互偏移的副本
        推薦度:
        導(dǎo)讀PhotoShop算法原理解析系列-像素化-碎片: 接著上一篇文章的熱度,繼續(xù)講講一些稍微簡單的算法吧。 本文來講講碎片算法,先貼幾個效果圖吧: 這是個破壞性的濾鏡,拿美女來說事是因為搞圖像的人90%是男人,色色的男人。 關(guān)于碎片濾鏡的原理,網(wǎng)絡(luò)上可找到的資料為:將圖像創(chuàng)建四個相互偏移的副本
        接著上一篇文章的熱度,繼續(xù)講講一些稍微簡單的算法吧。

        本文來講講碎片算法,先貼幾個效果圖吧:

        PhotoShop算法原理解析系列 - 像素化-碎片 PhotoShop算法原理解析系列 - 像素化-碎片 PhotoShop算法原理解析系列 - 像素化-碎片 PhotoShop算法原理解析系列 - 像素化-碎片

        這是個破壞性的濾鏡,拿美女來說事是因為搞圖像的人90%是男人,色色的男人。

        關(guān)于碎片濾鏡的原理,網(wǎng)絡(luò)上可找到的資料為:將圖像創(chuàng)建四個相互偏移的副本,產(chǎn)生類似重影的效果。

        就憑上述一句話,我們就可以動手了。

        分析:通過上述幾幅圖像的比較,特別是眼睛部位,可以看出處理的圖應(yīng)該看得出像是單眼變成了4個眼睛,因此,網(wǎng)絡(luò)上的說法可靠。

        那么偏移的中心在哪里,偏移的數(shù)量又是多少呢,4個偏移,分別是往那些方向偏移呢,這些問題也很簡單,可以那PS做驗證:

        具體步驟如下:打開一幅圖像,在圖像顏色比較單調(diào)的地方(比如上述美女的手臂處)填充一處2*2像素的紅色,然后復(fù)制圖層,對復(fù)制后的圖層進(jìn)行碎片濾鏡處理,并調(diào)整圖層透明度為50%,局部放大可得到如下圖像:

        PhotoShop算法原理解析系列 - 像素化-碎片

        如此效果,則可輕易得出結(jié)論:

        偏移的中心就是以每個像素為中心,4個偏移分別以中心對稱,斜45度均勻圓周布置,水平和垂直偏移各45度,偏移量4個像素。

        那么如何疊加的問題應(yīng)該可以猜測,是取四次偏移后累加值的平均值。

        針對如此思路,我寫出如下算法:

        private void CmdFragment_Click(object sender, EventArgs e)
        { int X, Y, Z, XX, YY; int Width, Height, Stride; int Speed, Index; int SumR, SumG, SumB;
         Bitmap Bmp = (Bitmap)Pic.Image; if (Bmp.PixelFormat != PixelFormat.Format24bppRgb) throw new Exception("不支持的圖像格式.");
        
         Width = Bmp.Width; Height = Bmp.Height; Stride = (int)((Bmp.Width * 3 + 3) & 0XFFFFFFFC); byte[] ImageData = new byte[Stride * Height]; // 用于保存圖像數(shù)據(jù),(處理前后的都為他)
         byte[] ImageDataC = new byte[Stride * Height]; // 用于保存克隆的圖像數(shù)據(jù)
         int[] OffsetX = new int[] { 4, -4, -4, 4 }; // 每個點的偏移量
         int[] OffsetY = new int[] { -4, -4, 4, 4 }; fixed (byte* P = &ImageData[0], CP = &ImageDataC[0])
         { byte* DataP = P, DataCP = CP;
         BitmapData BmpData = new BitmapData();
         BmpData.Scan0 = (IntPtr)DataP; // 設(shè)置為字節(jié)數(shù)組的的第一個元素在內(nèi)存中的地址
         BmpData.Stride = Stride;
         Bmp.LockBits(new Rectangle(0, 0, Bmp.Width, Bmp.Height), ImageLockMode.ReadWrite | ImageLockMode.UserInputBuffer, PixelFormat.Format24bppRgb, BmpData);
        
         Stopwatch Sw = new Stopwatch(); // 只獲取計算用時 Sw.Start();
         System.Buffer.BlockCopy(ImageData, 0, ImageDataC, 0, Stride * Height); // 填充克隆數(shù)據(jù) 
        
         for (Y = 0; Y < Height; Y++)
         {
         Speed = Y * Stride; for (X = 0; X < Width; X++)
         {
         SumB = 0; SumG = 0; SumR = 0; for (Z = 0; Z < 4; Z++) // 累積取樣點的取樣和 {
         XX = X + OffsetX[Z];
         YY = Y + OffsetY[Z]; if (XX < 0) // 注意越界
         XX = 0; else if (XX >= Width)
         XX = Width - 1; if (YY < 0)
         YY = 0; else if (YY >= Height)
         YY = Height - 1;
         Index = YY * Stride + XX * 3;
         SumB += DataCP[Index];
         SumG += DataCP[Index + 1];
         SumR += DataCP[Index + 2];
         }
        
         DataP[Speed] = (byte)((SumB+2) >> 2); // 求平均值(Sum+2)/4,為什么要+2,就為了四舍五入。比如如果計算
        結(jié)果為108.6,則取像素109更為合理 DataP[Speed + 1] = (byte)((SumG + 2) >> 2); DataP[Speed + 2] = (byte)((SumR + 2) >> 2); Speed += 3; // 跳往下一個像素 } } Sw.Stop(); this.Text = "計算用時: " + Sw.ElapsedMilliseconds.ToString() + " ms"; Bmp.UnlockBits(BmpData); // 必須先解鎖,否則Invalidate失敗 } Pic.Invalidate();}

          算法中,OffsetX 和 OffsetY分別為取樣點像素的偏移量。同樣,由于該濾鏡涉及到了領(lǐng)域操作,在處理前需要做像素備份,但這里沒有對備份數(shù)據(jù)進(jìn)行擴(kuò)展。因此,在內(nèi)部代碼里就需要對取樣點的坐標(biāo)進(jìn)行驗證,看是否超過其范圍,如果超過范圍,通常在圖像濾鏡算法范圍內(nèi),有3種處理方式:

        (1)超過了則認(rèn)為是其最接近的邊界值,即重復(fù)邊緣像素,這部分代碼即上述貼出的if ..... else if 部分。

        (2)折回,可用如下代碼來描述:

        while (XX >= Width)
         XX = XX - Width;while (XX < 0)
         XX = XX + Width;while (YY >= Height)
         YY = YY - Height;while (YY < 0)
         YY = YY + Height;

        (3) 只計算在圖像范圍內(nèi)的像素: 

         if (XX >= 0 && XX < Width && YY >= 0 && YY < Height)
         {
         // 累加計算
         }

        當(dāng)然這樣做,就必須用一個變量記錄下都做了多少次符合條件的計算。

        有興趣的朋友可以自己改改代碼試一試。

        上述代碼段中DataP[Speed] = (byte)((SumB+2) >> 2);要對SumB加2的原因是為了讓結(jié)果進(jìn)行四舍五入的操作,這樣才較為合理。

        經(jīng)過測試,上述代碼和PS處理的效果100%的吻合。說明我們的猜測是完全正確的。

        還可以對算法進(jìn)一步擴(kuò)展: 想的遠(yuǎn)一點,為什么非的是4個重影呢,非得是45度角度呢,非得是4個像素的水平和垂直偏移呢。我給出下圖讓有興趣的讀者自己研發(fā)吧。

        PhotoShop算法原理解析系列 - 像素化-碎片

        圖中,角度為32度,半徑為10,碎片數(shù)為7,可產(chǎn)生類似下面的效果(可用我的Imageshop進(jìn)行驗證):

        PhotoShop算法原理解析系列 - 像素化-碎片 PhotoShop算法原理解析系列 - 像素化-碎片

        更多PhotoShop算法原理解析系列 - 像素化-碎片相關(guān)文章請關(guān)注PHP中文網(wǎng)!

        聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        PhotoShop算法原理解析系列-像素化-碎片

        PhotoShop算法原理解析系列-像素化-碎片: 接著上一篇文章的熱度,繼續(xù)講講一些稍微簡單的算法吧。 本文來講講碎片算法,先貼幾個效果圖吧: 這是個破壞性的濾鏡,拿美女來說事是因為搞圖像的人90%是男人,色色的男人。 關(guān)于碎片濾鏡的原理,網(wǎng)絡(luò)上可找到的資料為:將圖像創(chuàng)建四個相互偏移的副本
        推薦度:
        標(biāo)簽: 原理 碎片 Photoshop
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 无码精品国产一区二区三区免费| 亚洲熟妇无码乱子AV电影| 18禁黄网站禁片免费观看不卡| 日韩精品久久久久久免费| 成人一a毛片免费视频| 日韩在线天堂免费观看 | 美女黄频免费网站| a级毛片毛片免费观看久潮| 182tv免费观看在线视频| 亚洲精品国产啊女成拍色拍| 亚洲AV色无码乱码在线观看 | 午夜精品射精入后重之免费观看 | 无码国产亚洲日韩国精品视频一区二区三区 | 国产精品亚洲片在线va| 色哟哟国产精品免费观看| 99久久精品免费精品国产| 亚洲精彩视频在线观看| 人妻视频一区二区三区免费| 国产亚洲自拍一区| 亚洲色大情网站www| 性无码免费一区二区三区在线| 亚洲国产精品成人久久| 色老头综合免费视频| 亚洲高清国产AV拍精品青青草原| 免费A级毛片无码专区| 亚洲成A人片在线播放器| 2021在线观看视频精品免费| 亚洲色偷偷综合亚洲AV伊人蜜桃| 亚洲?V无码乱码国产精品| 伊人久久免费视频| 亚洲七久久之综合七久久| 噼里啪啦免费观看高清动漫4| 亚洲国产精品特色大片观看完整版| 亚洲视频在线免费播放| 激情无码亚洲一区二区三区 | 亚洲高清在线播放| 国产一级高青免费| 亚洲人成影院在线无码观看| 亚洲精品国产摄像头| 最近中文字幕无免费视频| 亚洲一卡2卡三卡4卡无卡下载|