邊緣處理

卷積邊界問題

圖像卷積時(shí)邊界像素不能被卷積計(jì)算進(jìn)去克饶,因?yàn)檫吔缣幭袼貨]有完全跟kernel重疊抬纸,當(dāng)ksize等于3時(shí),邊緣有1個(gè)像素沒有被處理弦悉,當(dāng)ksize等于5時(shí)窒典,邊緣有2個(gè)沒有被處理。

處理邊緣

??在卷積開始前增加邊緣像素稽莉,填充的像素為白色或黑色瀑志,這樣確保圖像的邊緣被處理,在卷積計(jì)算之后去掉這些邊緣肩祥,opencv默認(rèn)處理的方法是copyMakeBorder(src, dst, top, bottom, left, right, borderType, color)
??其中默認(rèn)的borderType是BORDER_DEFAULT后室,另外還有BORDER_WRAP缩膝,BORDER_CONSTANT混狠,BORDER_REPLICATE三種類型

  • BORDER_WRAP 用另外一邊邊緣像素來填充
  • BORDER_CONSTANT 用指定像素填充
  • BORDER_REPLICATE 用已知的邊緣像素值填充
BORDER_REPLICATE .png

BORDER_WRAP .png
#include "stdafx.h"
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv;
Mat src, dst;
int main(int argc, int ** argv)
{
    src = imread("F:/cat.png");
    if (!src.data) {
        printf("無法加載圖片\n");
        return -1;
    }
    namedWindow("input img", CV_WINDOW_AUTOSIZE);
    namedWindow("output img", CV_WINDOW_AUTOSIZE);
    imshow("input img", src);
    int top = (int)(0.05*src.rows);
    int bottom = (int)(0.05*src.rows);
    int left = (int)(0.05*src.cols);
    int right = (int)(0.05*src.cols);
    RNG rng(12345);
    int borderType = BORDER_DEFAULT;
    int c = 0;
    while (true) {
        c = waitKey(500);
        //ESC
        if ((char)c == 27) {
            break;
        }
        if ((char)c == 'r') {
            borderType = BORDER_REPLICATE;
        }
        if ((char)c == 'c') {
            borderType = BORDER_CONSTANT;
        }
        if ((char)c == 'w') {
            borderType = BORDER_WRAP;
        }
        else {
            borderType = BORDER_DEFAULT;
        }
        Scalar color = Scalar(rng.uniform(0, 255), rng.uniform(0, 255), rng.uniform(0, 255));
        copyMakeBorder(src, dst, top, bottom, left, right, borderType, color);
        imshow("final result", dst);
    }
    waitKey(0);
    return 0;
}

邊緣檢測

Canny算法是很好的邊緣檢測算法,算法分5步

  • 高斯模糊
  • 灰度轉(zhuǎn)換
  • 梯度計(jì)算
  • 非最大信號(hào)抑制
  • 高低閾值輸出二值圖像
    Canny(src, edge_output, low_threshold, h_threshold , ksize, L2gradient)

高低閾值輸出二值圖像

高低閾值分別為T2疾层,T1将饺,凡是高于T2的保留,低于T1的舍棄痛黎,從逃獄T2的出發(fā)予弧,凡是大于T1而且直接連接的都保留,最后得到二值圖像湖饱。
推薦T1和T2的關(guān)系是T2:T1 = 2:1或3:1

#include "stdafx.h"
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv;
Mat src, dst, gray;
int g_value = 60;
int maxvalue = 255;
void cannry_callback(int, void *);

int main(int argc, int ** argv)
{
    src = imread("F:/cat.png");
    if (!src.data) {
        printf("無法加載圖片\n");
        return -1;
    }
    namedWindow("input img", CV_WINDOW_AUTOSIZE);
    namedWindow("output img", CV_WINDOW_AUTOSIZE);
    imshow("input img", src);
    cvtColor(src, gray, CV_BGR2GRAY);
    createTrackbar("threshold value:", "output img", &g_value, maxvalue, cannry_callback);
    cannry_callback(0, 0);
    waitKey(0);
    return 0;
}
void cannry_callback(int, void *) {
    Mat edge_output;
    blur(gray, gray, Size(3, 3), Point(-1, -1), BORDER_DEFAULT);
    Canny(gray, edge_output, g_value, g_value * 2, 3, false);
    imshow("output img", ~edge_output);
}

輸出結(jié)果演示


image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末掖蛤,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子井厌,更是在濱河造成了極大的恐慌蚓庭,老刑警劉巖致讥,帶你破解...
    沈念sama閱讀 218,525評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異器赞,居然都是意外死亡垢袱,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,203評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門港柜,熙熙樓的掌柜王于貴愁眉苦臉地迎上來请契,“玉大人,你說我怎么就攤上這事夏醉∷叮” “怎么了?”我有些...
    開封第一講書人閱讀 164,862評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵畔柔,是天一觀的道長救恨。 經(jīng)常有香客問我,道長释树,這世上最難降的妖魔是什么肠槽? 我笑而不...
    開封第一講書人閱讀 58,728評(píng)論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮奢啥,結(jié)果婚禮上秸仙,老公的妹妹穿的比我還像新娘。我一直安慰自己桩盲,他們只是感情好寂纪,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,743評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著赌结,像睡著了一般捞蛋。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上柬姚,一...
    開封第一講書人閱讀 51,590評(píng)論 1 305
  • 那天拟杉,我揣著相機(jī)與錄音,去河邊找鬼量承。 笑死搬设,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的撕捍。 我是一名探鬼主播拿穴,決...
    沈念sama閱讀 40,330評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼忧风!你這毒婦竟也來了默色?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,244評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤狮腿,失蹤者是張志新(化名)和其女友劉穎腿宰,沒想到半個(gè)月后弟蚀,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,693評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡酗失,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,885評(píng)論 3 336
  • 正文 我和宋清朗相戀三年义钉,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片规肴。...
    茶點(diǎn)故事閱讀 40,001評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡捶闸,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出拖刃,到底是詐尸還是另有隱情删壮,我是刑警寧澤,帶...
    沈念sama閱讀 35,723評(píng)論 5 346
  • 正文 年R本政府宣布兑牡,位于F島的核電站央碟,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏均函。R本人自食惡果不足惜亿虽,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,343評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望苞也。 院中可真熱鬧洛勉,春花似錦、人聲如沸如迟。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,919評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽殷勘。三九已至此再,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間玲销,已是汗流浹背输拇。 一陣腳步聲響...
    開封第一講書人閱讀 33,042評(píng)論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留痒玩,地道東北人淳附。 一個(gè)月前我還...
    沈念sama閱讀 48,191評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像蠢古,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子别凹,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,955評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容