C 類似PS的魔棒工具 2 羽化

2021-08-14 01:37:04 字數 1741 閱讀 9030

所謂模糊其實就是讓某點的顏色受其周圍顏色的不同程度的同化。

上篇文章得到的掩碼圖是二值的連通區域圖,相鄰不同值就是邊界所在。將這二值轉為0和255,然後對邊界進行線性的模糊處理,二值變為0-255的漸變圖,原來的邊界變為有一定寬度的帶,這個帶的寬度就是羽化半徑(或者直徑,寬度,反正就是那個意思)。當然,對邊界進行模糊處理在程式上恐怕不好操作,那就浪費點時間,對整幅圖進行模糊處理。

double [,] gaussiankn = new double[n, n];//

kernelsum = 0;for (i = 0; i < n; i++)}

sigma調整正態分佈的「高矮」。結果發現,還不如直接線性遞增遞減產生乙個(不知道什麼名字)卷積核,效果還不錯,計算又簡單快捷。如下

/// /// 生成n*n的矩陣,作為模糊卷積核

///

/// 矩陣邊長,必須為奇數,最小為1

/// 目的矩陣

private int[,] _createkernel(int n)

}return kn;

}

kernelsum 是為了不使用浮點數加入的,就是相當於將浮點數的乘法變為乘乙個整數(分子)再除乙個整數(分母)。再後面程式中將卷積和除kernelsum,才能得到想要的結果

//消耗大量時間,因為進行了沒有優化的卷積運算

//對二值圖模糊處理,產生一張alpha漸變圖

private bitmap blurred(bitmap srcbmp)

}bitmap blurbmp = new bitmap( width, height);//建立新位圖,儲存模糊位圖資料

bitmapdata blurbitmapdata = blurbmp.lockbits(new rectangle(new point(0, 0), blurbmp.size), imagelockmode.readwrite, pixelformat.format32bppargb);

unsafe

}blurbmp.unlockbits(blurbitmapdata);

#if debug_tsp2

lab_time.refresh();

#endif

return blurbmp;

}//獲取某點顏色積分

private color integratecolorpoint(int i, int j, int[,] kn, int[,] picbuf, int w, int h)

}cr /= kernelsum;

cr = cr > 255 ? 255 : cr;

return color.fromargb(cr,0,0,0);

}

**太多就不一一貼出,拉幾個控制項測試一番

滑鼠畫乙個區域

拖開,便於觀察,這是模糊半徑為0的效果

調整模糊半徑,可以看到選取部分邊緣柔化了,也可以看到模糊處理時間十分感人

ps入門 工具的使用

ps軟體介面布局 選單欄 工具箱 工具屬性欄 懸浮面板以及畫布 1 新建畫布 ctrl n,一般預設大小單位為mm 2 雙擊空白地方可以進行素材選擇,或者快捷鍵為ctrl o,也可以直接拖入 3 畫布三種顯示方式切換 f鍵 4 隱藏屬性欄 工具欄 懸浮面板 tab鍵 5 縮放工具 z鍵,預設為放大工...

PS海綿工具加深工具簡單工具的區別

先來簡單概述一下3個工具的作用,再講述區別 主要是用來突出主體部分,調整區域性飽和度主要吸取黑白以外的部分 分為去色和加色兩種模式 即降低飽和度 增加飽和度 變暗工具,對影象進行變暗達到對影象的顏色加深的效果 相當於陰影 與建大農具搭配會有立體的效果 增亮工具,對影象中部分進行增加亮度處理達到對影象...

qdir 類似工具 C 與Qt學習路線

連線,實現資料庫操作功能 該庫我手頭上無頭檔案和文件,需自行查詢 11 運算子過載 需要掌握 分別使用成員函式和友元函式進行運算子過載 等雙目運算子的過載 等單目運算子的過載 等雙目賦值運算子的過載 流控制運算子的過載 練習方式 qstring,qt的iterator迭代器 擴充套件內容 下標運算子...