<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          OpenCV中導(dǎo)向?yàn)V波介紹與應(yīng)用

          共 3927字,需瀏覽 8分鐘

           ·

          2021-12-01 13:52

          點(diǎn)擊上方小白學(xué)視覺(jué)”,選擇加"星標(biāo)"或“置頂

          重磅干貨,第一時(shí)間送達(dá)

          導(dǎo)向?yàn)V波介紹

          導(dǎo)向?yàn)V波是使用導(dǎo)向圖像作為濾波內(nèi)容圖像,在導(dǎo)向圖像上實(shí)現(xiàn)局部線性函數(shù)表達(dá),實(shí)現(xiàn)各種不同的線性變換,輸出變形之后的導(dǎo)向?yàn)V波圖像。根據(jù)需要,導(dǎo)向圖像可以跟輸入圖像不同或者一致。假設(shè)I是導(dǎo)向圖像、p是輸入圖像、q是導(dǎo)向?yàn)V波輸出圖像,導(dǎo)向?yàn)V波是作為局部線性模型描述導(dǎo)向圖像I與輸出圖像q之間的關(guān)系。

          導(dǎo)向?yàn)V波算法實(shí)現(xiàn)的一般步驟為:

          1. 讀取導(dǎo)向圖像I與輸入圖像P

          2. 輸入?yún)?shù) 與 其中 表示窗口半徑大小,單位是像素, 表示模糊程度

          3. 積分圖計(jì)算I的均值與方差、輸入圖像的均值以及I與P的乘積IP

          4. 計(jì)算線性相關(guān)因子a與b

            • a=(IP-meanImeanP)/(Var_I+ )

            • b=meanP-ameanI

          5. 計(jì)算a與b的均值

          6. 使用均值得到導(dǎo)向?yàn)V波結(jié)果Q=meana*I+meanb

          導(dǎo)向?yàn)V波最常用四個(gè)功能是:

          • 邊緣保留濾波

          • 圖像去噪聲

          • 圖像邊緣羽化

          • 圖像增強(qiáng)(對(duì)比度)

          OpenCV中導(dǎo)向?yàn)V波函數(shù)

          由于導(dǎo)向?yàn)V波計(jì)算均值與方差可以通過(guò)積分圖查找快速得到,因此導(dǎo)向?yàn)V波的速度會(huì)很快,作為邊緣保留濾波它比雙線性濾波有明顯的速度優(yōu)勢(shì),OpenCV中在擴(kuò)展模塊ximgproc中實(shí)現(xiàn)了圖像的導(dǎo)向?yàn)V波函數(shù),相關(guān)API函數(shù)與參數(shù)解釋如下:

          1. void cv::ximgproc::guidedFilter ? ?( ?

          2. ? ?InputArray guide,// 導(dǎo)向圖像

          3. ? ?InputArray src,// 輸入下

          4. ? ?OutputArray dst,//導(dǎo)向?yàn)V波輸出

          5. ? ?int radius,//窗口半徑大小

          6. ? ?double eps,// 模糊程度

          7. ? ?int dDepth = -1// 輸出圖像深度

          8. )

          eps值越大圖像模糊程度越大、半徑radius值越大圖像模糊程度越高。

          代碼演示

          通過(guò)代碼演示了導(dǎo)向?yàn)V波根據(jù)輸入的導(dǎo)向圖像不一樣分別實(shí)現(xiàn)了圖像濾波的邊緣保留、去噪聲、羽化、對(duì)比度提升功能。完整的演示代碼如下:

          1. #include

          2. #include

          3. #include

          4. using namespace cv;

          5. using namespace cv::ximgproc;

          6. using namespace std;

          7. void guide_demo(Mat &guide, Mat &input, int r, double e);

          8. void enhance_demo(Mat &guide, Mat &input, int r, double e);

          9. int main(int argc, char** argv) {

          10. ? ?Mat src = imread("D:/vcprojects/images/guide.png");

          11. ? ?if (src.empty()) {

          12. ? ? ? ?printf("could not load image...\n");

          13. ? ? ? ?return -1;

          14. ? ?}

          15. ? ?namedWindow("input", CV_WINDOW_AUTOSIZE);

          16. ? ?imshow("input", src);

          17. ? ?namedWindow("output", CV_WINDOW_AUTOSIZE);

          18. ? ?int r = 2;

          19. ? ?double eps = 0.1;

          20. ? ?int type = 0;

          21. ? ?while (true) {

          22. ? ? ? ?char c = waitKey(50);

          23. ? ? ? ?printf("input digit : %d\n", c);

          24. ? ? ? ?if (c == 49) { // 邊緣保留

          25. ? ? ? ? ? ?type = 1;

          26. ? ? ? ?}

          27. ? ? ? ?else if (c == 50) {

          28. ? ? ? ? ? ?type = 2;

          29. ? ? ? ?}

          30. ? ? ? ?else if (c == 51) {

          31. ? ? ? ? ? ?type = 3;

          32. ? ? ? ?}

          33. ? ? ? ?else if (c == 52) { // 去噪

          34. ? ? ? ? ? ?type = 4;

          35. ? ? ? ?}

          36. ? ? ? ?else if (c == 53) { // 羽化

          37. ? ? ? ? ? ?type = 5;

          38. ? ? ? ?}

          39. ? ? ? ?else if (c == 54) { // 提升

          40. ? ? ? ? ? ?type = 6;

          41. ? ? ? ?}

          42. ? ? ? ?else if (c == 27) {

          43. ? ? ? ? ? ?break;

          44. ? ? ? ?}

          45. ? ? ? ?if (type == 0 || type == 1 || type == 2 || type == 3) {

          46. ? ? ? ? ? ?guide_demo(src, src, pow(r, type), eps*eps * pow(r, type));

          47. ? ? ? ?}

          48. ? ? ? ?else if(type == 4){

          49. ? ? ? ? ? ?Mat guide = imread("D:/vcprojects/images/gf_guide.png");

          50. ? ? ? ? ? ?Mat input = imread("D:/vcprojects/images/gf_noise.png");

          51. ? ? ? ? ? ?imshow("input", input);

          52. ? ? ? ? ? ?guide_demo(guide, input, 8, 0.02*0.02);

          53. ? ? ? ?}

          54. ? ? ? ?else if (type == 5) {

          55. ? ? ? ? ? ?Mat guide = imread("D:/vcprojects/images/twocat.png");

          56. ? ? ? ? ? ?Mat input = imread("D:/vcprojects/images/twocat_mask.png", IMREAD_GRAYSCALE);

          57. ? ? ? ? ? ?imshow("input", input);

          58. ? ? ? ? ? ?guide_demo(guide, input, 60, 10e-6);

          59. ? ? ? ?}

          60. ? ? ? ?else {

          61. ? ? ? ? ? ?Mat input = cv::imread("D:/vcprojects/images/demo.png");

          62. ? ? ? ? ? ?input.convertTo(input, CV_32F, 1.0 / 255.0);

          63. ? ? ? ? ? ?imshow("input", input);

          64. ? ? ? ? ? ?int r = 16;

          65. ? ? ? ? ? ?double eps = 0.1 * 0.1;

          66. ? ? ? ? ? ?enhance_demo(input, input, r, eps);

          67. ? ? ? ?}

          68. ? ?}

          69. ? ?waitKey(0);

          70. ? ?return 0;

          71. }

          72. void guide_demo(Mat &guide, Mat &input, int r, double e) {

          73. ? ?double eps = e * 255 * 255;

          74. ? ?Mat dst;

          75. ? ?guidedFilter(guide, input, dst, r, eps, -1);

          76. ? ?imshow("output", dst);

          77. }

          78. void enhance_demo(Mat &guide, Mat &input, int r, double e) {

          79. ? ?Mat dst;

          80. ? ?guidedFilter(guide, input, dst, r, e, -1);

          81. ? ?Mat result = (guide - dst) * 5 + dst;

          82. ? ?imshow("output", result);

          83. }

          運(yùn)行截圖如下:

          邊緣保留

          去噪聲

          邊緣羽化

          對(duì)比度提升


          下載1:OpenCV-Contrib擴(kuò)展模塊中文版教程
          在「小白學(xué)視覺(jué)」公眾號(hào)后臺(tái)回復(fù):擴(kuò)展模塊中文教程即可下載全網(wǎng)第一份OpenCV擴(kuò)展模塊教程中文版,涵蓋擴(kuò)展模塊安裝、SFM算法、立體視覺(jué)、目標(biāo)跟蹤、生物視覺(jué)、超分辨率處理等二十多章內(nèi)容。

          下載2:Python視覺(jué)實(shí)戰(zhàn)項(xiàng)目52講
          小白學(xué)視覺(jué)公眾號(hào)后臺(tái)回復(fù):Python視覺(jué)實(shí)戰(zhàn)項(xiàng)目即可下載包括圖像分割、口罩檢測(cè)、車道線檢測(cè)、車輛計(jì)數(shù)、添加眼線、車牌識(shí)別、字符識(shí)別、情緒檢測(cè)、文本內(nèi)容提取、面部識(shí)別等31個(gè)視覺(jué)實(shí)戰(zhàn)項(xiàng)目,助力快速學(xué)校計(jì)算機(jī)視覺(jué)。

          下載3:OpenCV實(shí)戰(zhàn)項(xiàng)目20講
          小白學(xué)視覺(jué)公眾號(hào)后臺(tái)回復(fù):OpenCV實(shí)戰(zhàn)項(xiàng)目20講即可下載含有20個(gè)基于OpenCV實(shí)現(xiàn)20個(gè)實(shí)戰(zhàn)項(xiàng)目,實(shí)現(xiàn)OpenCV學(xué)習(xí)進(jìn)階。

          交流群


          歡迎加入公眾號(hào)讀者群一起和同行交流,目前有SLAM、三維視覺(jué)、傳感器自動(dòng)駕駛、計(jì)算攝影、檢測(cè)、分割、識(shí)別、醫(yī)學(xué)影像、GAN算法競(jìng)賽等微信群(以后會(huì)逐漸細(xì)分),請(qǐng)掃描下面微信號(hào)加群,備注:”昵稱+學(xué)校/公司+研究方向“,例如:”張三?+?上海交大?+?視覺(jué)SLAM“。請(qǐng)按照格式備注,否則不予通過(guò)。添加成功后會(huì)根據(jù)研究方向邀請(qǐng)進(jìn)入相關(guān)微信群。請(qǐng)勿在群內(nèi)發(fā)送廣告,否則會(huì)請(qǐng)出群,謝謝理解~


          瀏覽 109
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  中日欧美韩精品 | 在线观看a网址 | 手机无码在线 | 夜色福利在线播放 | 丁香花 在线视频 婷婷综合 |