霍夫變換概述和標(biāo)準(zhǔn)霍夫變換

在圖像處理和計算機視覺領(lǐng)域中恰响,如何沖當(dāng)前的退選哪個中提取出所需要的特征信息是圖像識別的關(guān)鍵所在。在許多應(yīng)用場合中需要快速的檢測出直線或者是圓涌献。其中一種非常有效的的解決方法是霍夫變換胚宦,其為圖像處理中從圖像中識別幾何圖形的基本方法。

霍夫變換的概述

霍夫變換在opencv中分為霍夫線變換和霍夫圓變換

opencv中的霍夫線變換

霍夫線變換是一種用來尋找直線的方法燕垃,在使用霍夫線變換之前枢劝,首先對圖像進行邊緣檢測,即霍夫線變換的直接輸入只能是邊緣二值圖像卜壕。

opencv中霍夫線變換有三種

(1)標(biāo)準(zhǔn)霍夫變換(SHT)您旁,由HoughLines調(diào)用

(2)多尺度霍夫變換(MSHT),由HoughLines調(diào)用轴捎,

(3)累計概率霍夫變換(PPHT)鹤盒,由HoughLinesP調(diào)用蚕脏,可以在一定范圍內(nèi)進行霍夫變換

霍夫變換的原理

標(biāo)準(zhǔn)霍夫變換函數(shù):HoughLines()

void HoughLines( InputArray image,// 源圖像,需為8位的單通道二進制圖像侦锯,可以將任意的源圖像載進來驼鞭,并由函數(shù)修改成此格式再放進來

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? OutputArray lines,

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? double rho,

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?double theta,?

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?int threshold,

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?double srn = 0,?

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?double stn = 0,

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?double min_theta = 0,

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?double max_theta = CV_PI );

參數(shù)詳解

代碼實現(xiàn)

NSString *image = @"lou.png";? ??

UIImage *image1 = [UIImage imageNamed:image];? ??

Mat im;? ? UIImageToMat(image1, im);? ? ? ?

?if (im.empty()) {? ? ? ? ??

? ? ? return;??

? }??

? // 創(chuàng)建零時變量? ??

Mat midImage,dstImage;? ??

// 進行邊緣檢測和轉(zhuǎn)換為灰度圖? ??

Canny(im, midImage, 50, 200);? ??

cvtColor(midImage, dstImage, COLOR_GRAY2BGR);? ? ? ??

// 進行霍夫變換? ??

std::vector<Vec2f>lines;// 定義一個矢量lines,存放得到的線段矢量集合

HoughLines(midImage, lines, CV_PI/180, 150, 0);

for (size_t i = 0; i < lines.size(); i++) {

float rho = lines[i][0],theta = lines[i][1];

cv::Point pt1,pt2;

double a = cos(theta),b = sin(theta);

double x0 = a*rho,y0 = b*rho;

pt1.x = cvRound(x0 + 1000*(-b));

pt1.y = cvRound(y0 + 1000*(a));

pt2.x = cvRound(x0 - 1000*(-b));

pt2.y = cvRound(y0 - 1000*(a));

line(dstImage, pt1, pt2, Scalar(100,100,195));

}

self.secondImageView.image = MatToUIImage(dstImage);

效果

累計概率霍夫變換函數(shù):HoughLinesP() 函數(shù)

void HoughLinesP( InputArray image,

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? OutputArray lines,

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?double rho,

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?double theta,?

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?int threshold,

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?double minLineLength = 0,?

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?double maxLineGap = 0

?);

參數(shù)詳解

代碼實現(xiàn)

NSString *image = @"xixi.jpg";? ??

UIImage *image1 = [UIImage imageNamed:image]; ??

?Mat im;? ??

UIImageToMat(image1, im);? ? ? ?

?if (im.empty()) {? ? ? ? ? ? ? ? return;? ? }? ??

// 創(chuàng)建零時變量? ?

?Mat midImage,dstImage;? ??

// 進行邊緣檢測和轉(zhuǎn)換為灰度圖? ?

?Canny(im, midImage, 50, 200,3);? ??

cvtColor(midImage, dstImage, CV_GRAY2BGR);? ?

std::vector<Vec4i>lines;// 定義一個矢量lines尺碰,存放得到的線段矢量集合

HoughLinesP(midImage,lines, 1,CV_PI/180, 80, 50, 10);

for (size_t i = 0; i < lines.size(); i++) {

Vec4i l = lines[i];

line(dstImage, cv::Point(l[0],l[1]),cv::Point(l[2],l[3]) , Scalar(186,88,255),1,LINE_AA);

}

self.secondImageView.image = MatToUIImage(dstImage);

效果

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末挣棕,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子葱蝗,更是在濱河造成了極大的恐慌穴张,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,084評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件两曼,死亡現(xiàn)場離奇詭異皂甘,居然都是意外死亡,警方通過查閱死者的電腦和手機悼凑,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,623評論 3 392
  • 文/潘曉璐 我一進店門偿枕,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人户辫,你說我怎么就攤上這事渐夸。” “怎么了渔欢?”我有些...
    開封第一講書人閱讀 163,450評論 0 353
  • 文/不壞的土叔 我叫張陵墓塌,是天一觀的道長。 經(jīng)常有香客問我奥额,道長苫幢,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,322評論 1 293
  • 正文 為了忘掉前任垫挨,我火速辦了婚禮韩肝,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘九榔。我一直安慰自己哀峻,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,370評論 6 390
  • 文/花漫 我一把揭開白布哲泊。 她就那樣靜靜地躺著剩蟀,像睡著了一般。 火紅的嫁衣襯著肌膚如雪攻旦。 梳的紋絲不亂的頭發(fā)上喻旷,一...
    開封第一講書人閱讀 51,274評論 1 300
  • 那天,我揣著相機與錄音牢屋,去河邊找鬼且预。 笑死,一個胖子當(dāng)著我的面吹牛烙无,可吹牛的內(nèi)容都是我干的锋谐。 我是一名探鬼主播,決...
    沈念sama閱讀 40,126評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼截酷,長吁一口氣:“原來是場噩夢啊……” “哼涮拗!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起迂苛,我...
    開封第一講書人閱讀 38,980評論 0 275
  • 序言:老撾萬榮一對情侶失蹤三热,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后三幻,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體就漾,經(jīng)...
    沈念sama閱讀 45,414評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,599評論 3 334
  • 正文 我和宋清朗相戀三年念搬,在試婚紗的時候發(fā)現(xiàn)自己被綠了抑堡。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,773評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡朗徊,死狀恐怖首妖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情爷恳,我是刑警寧澤有缆,帶...
    沈念sama閱讀 35,470評論 5 344
  • 正文 年R本政府宣布,位于F島的核電站温亲,受9級特大地震影響棚壁,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜铸豁,卻給世界環(huán)境...
    茶點故事閱讀 41,080評論 3 327
  • 文/蒙蒙 一灌曙、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧节芥,春花似錦在刺、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,713評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至相艇,卻和暖如春颖杏,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背坛芽。 一陣腳步聲響...
    開封第一講書人閱讀 32,852評論 1 269
  • 我被黑心中介騙來泰國打工留储, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留翼抠,地道東北人。 一個月前我還...
    沈念sama閱讀 47,865評論 2 370
  • 正文 我出身青樓获讳,卻偏偏與公主長得像阴颖,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子丐膝,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,689評論 2 354

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