OpenCV —— 影像處理

來源:互聯網
上載者:User

標籤:des   style   class   blog   code   http   

使用映像結構中所定義的高層處理方法(圖形和視覺範疇)來完成特定任務

平滑處理   cvSmooth

處理後映像與輸入映像的大小相同(不用考慮邊緣)

中值濾波  CV_MEDIAN 不支援 in place 操作 , 高斯濾波 CV_GAUSSIAN 支援 in place 操作(可以設定高斯核不對稱,雙邊濾波——高斯平滑,水彩畫處理,可用於映像分割)

映像形態學

膨脹 —— 把二值映像各像素串連成分的邊界擴大一層,填充邊緣或像素內部的孔;使灰階映像高亮地區逐漸增長

腐蝕 —— 把二值映像各像素串連成分的邊界點去掉從而縮小一層(去掉毛刺);使灰階映像高亮區減少

cvErode cvDilate

自訂核  IplConvKernel —— cvCreateStructuringElementEx()函數建立 ,由 cvReleaseStructuringElement() 函數釋放

形態核與卷積核不同,不需要任何的數值填充核

更通用的形態學 —— cvMorphologyEx —— 開閉運算,形態梯度,禮帽,黑帽

開運算 —— 先腐蝕然後膨脹 (可用來統計二值映像中的地區數)

閉運算 —— 先膨脹然後腐蝕 —— 對於連通地區分析,通常先採用腐蝕或閉運算來消除純粹由雜訊引起的部分,然後用開運算來串連相鄰的地區

閉運算消除了低於其臨近點的孤立點,開運算消除了高於其臨近點的孤立點

形態學梯度 = 膨脹 - 腐蝕 —— 對二值映像進行這一操作可將團塊的邊緣突出出來(描述映像亮度變化的劇烈程度)

禮帽   Top Hat = src – open(src) (開運算帶來的結果是放大裂縫或是局部低亮度地區,所以禮帽操作將局部亮度極大點分割出來)

黑帽   Black Hat = close(src) – src  黑色的洞被分割出來

 

漫水填充演算法 —— 標記或分離映像的一部分以便對其進行進一步處理

在映像上選擇一個種子點,然後把臨近地區所有相似點填充上同樣的顏色,漫水填充的結果總是某個連續的地區

cvFloodFill  可設定掩碼,cvFloodFill 不會覆蓋mask的非0像素點   flags —— 演算法的連通性,填充掩碼映像的值,CV_FLOODFILL_FIXED_RANGE

 

映像尺寸調整  —— cvResize 如果源圖象設定了ROI,cvResize 將會對ROI地區調整尺寸,以匹配靶心圖表像,若靶心圖表像設定了ROI,那麼。。。。(可以選擇不同的插值方式)

 

影像金字塔 —— 連續降採樣

cvPyrDown —— 先用高斯核卷積,然後刪除所有偶數行和偶數列  —— 丟失一定量資訊

cvPyrUp —— 映像首先在每個維度上擴大為原來的兩倍,新增的行列以0填充,然後給指定的濾波器進行卷積

映像分割 —— 快速初始分割先在金字塔高層的低解析度映像上完成,然後逐層對分割加以最佳化  ——  cvPyrSegmentation

由於影像金字塔各層的長和寬都必須是整數,所以起始映像的長和寬都能夠被2整除,並且能夠被2整除的次數不少於金字塔的總層數

CvMemStorage * storage = cvCreateMemStorage()

#include <cv.h>#include <highgui.h>int main(int argc,char** argv){    IplImage *src=cvLoadImage("wukong.jpg",CV_LOAD_IMAGE_UNCHANGED);    IplImage *dst=cvCreateImage(cvSize(src->width,src->height),src->depth,src->nChannels);    CvMemStorage* storage=cvCreateMemStorage(0);    CvSeq* comp=NULL;    cvPyrSegmentation(src,dst,storage,&comp,4,200,50);    int n_comp=comp->total;    for (int i=0;i<n_comp;i++)    {        CvConnectedComp* cc=(CvConnectedComp*)cvGetSeqElem(comp,i);        // ..... 怎麼處理還沒想好    }    cvReleaseMemStorage(&storage);    return 0;}

CvConnectedComponent —— 映像團塊

area 地區面積,value 地區顏色的平均值,rect 是一個地區的外接矩形,contour 是一個指向另一個序列的指標

 

閾值化

cvThreshold

cvAdaptiveThreshold  大津法,OTSU —— 按映像的灰階特性,將映像分成背景和目標2部分,背景和目標之間的類間方差越大,說明構成映像的的2部分的差別越大,當部分目標錯為背景或反之都會使2部分差別變小

#include <cv.h>#include <highgui.h>#include <math.h>IplImage *Igray=0, *It=0,*Iat;int main(int argc,char** argv){    int adaptive_method=CV_ADAPTIVE_THRESH_GAUSSIAN_C;    int threshold_type=CV_THRESH_BINARY;    int block_size=9;    double offset=5;    Igray=cvLoadImage("wukong.jpg",CV_LOAD_IMAGE_GRAYSCALE);        Iat=cvCreateImage(cvSize(Igray->width,Igray->height),IPL_DEPTH_8U,1);    cvAdaptiveThreshold(Igray,Iat,255,adaptive_method,threshold_type,block_size,offset);    cvNamedWindow("w1");    cvNamedWindow("w2");    cvShowImage("w1",Iat);    cvShowImage("w2",Igray);    cvWaitKey();    cvReleaseImage(&Iat);    cvDestroyAllWindows();    return 0;}

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.