Thư viện mã nguồn mở về thị giác máy tính OpenCV

Một phần của tài liệu nhận dạng biển báo giao thông hỗ trợ lái xe (Trang 49)

OpenCV là một thư viện các hàm lập trình nhằm mục đích hỗ trợ vấn đề thị giác

máy tính trong thời gian thực. OpenCV được phát triển từ Intel và hiện đang được hỗ

trợ bởi tổ chức Willow Garage. Nó được phát hành miễn phí dựa trên giấy phép mã nguồn mở BSD. Thư viện OpenCV có khả năng thực hiện đa nền tảng trên các hệ điều hành khác nhau (Windows, Linux, Mac) và tập trung chủ yếu vào các hàm xử lý ảnh từ cơ bản đến phức tạp. OpenCV có trên 500 hàm xử lý ảnh được phân thành các nhóm : các hàm xử lý ảnh tổng quát, phân mảnh, các phép biến đổi hình học, phát

Hình 3.5 : Giới thiệu OpenCV

Do đó thư viện OpenCV sẽ hỗ trợ giải quyết các vấn đề cơ bản về xử lý ảnh giúp

cho người phát triển tập trung vào giải thuật, phương pháp chính để giải quyết vấn đề.

§ Giới thiệu một số hàm trong thư viện OpenCV thông dụng được sử dụng trong luật văn này :

Hàm định dạng lại kích thước ảnh

void cvResize(const CvArr* src, CvArr* dst,

int interpolation=CV_INTER_LINEAR)

trong đó giải thuật nội suy được sử dụng là CV_INTER_NN (giải thuật giá trị điểm lân cận đã được giới thiệu trong mục 2.2.4)

Hàm biến đổi không gian màu từ không gian RGB không gian HSV

với code = CV_RGB2HSV, hàm thực hiện biến đổi một ảnh đầu vào src

được biểu diễn dưới dạng không gian màu RGB thành ảnh kết quả dstđược thể

hiện bằng không gian màu HSV bởi công thức chuyển đổi sau:

max( , , ) VR G B min( , , ) 0 0 0 V R G B khi V S V V          (3.1) 60( ) / 120 60( ) / 240 60 G B S if V R H B R S if V G if V B             Nếu H0 thì HH360

Hàm biến đổi khoảng cách (distance transform)

void cvDistTransform(const CvArr* src, CvArr* dst,

int distance_type=CV_DIST_L2, int mask_size=3, const float* mask=NULL,CvArr* labels=NULL)

Hàm trả về ảnh kết quả dst từ ảnh đầu vào src qua phép biến đổi khoảng

cách với phương pháp là distance_type (mặc định là CV_DIST_L2) như ví dụ

sau:

Hình 3.6 : Ví dụ về phép biến đổi khoảnh cách với distance_type = CV_DIST_C2

Hàm giới hạn ngưỡng cực đại cho từng điểm ảnh

double cvThreshold(const CvArr* src, CvArr* dst, double threshold, double maxValue, int thresholdType)

Hàm được sử dụng để giới hạn ngưỡng giá trị của ảnh đầu vào src thành ảnh đầu ra dst với ngưỡng giới hạn là threshold và tùy loại biến đổi thresholdType

mà sẽ có giá trị đầu ra khác nhau như sau:

Hàm thiết lập vùng ảnh con quan tâm trên một ảnh lớn

void cvSetImageROI(IplImage* image, CvRect rect)

Thiết lập vùng ảnh quan tâm ROI (region of interest) được xác định bởi hình chữ nhật rect trên ảnh image, các phép toán xử lý ảnh sau này sẽ chỉ ảnh hưởng, tác động tới vùng quan tâm ROI mà thôi.

Hàm vẽ đường bao hình chữ nhật

void cvRectangle(CvArr* img, CvPoint pt1, CvPoint pt2, CvScalar color, int thickness=1, int lineType=8, int shift=0)

Hàm được sử dụng để vẽ một hình chữ nhật được xác định bởi các đỉnh pt1, pt2 lên ảnh img với các tùy chọn về màu sắc, nét vẽ,…

Hàm tìm đường bao của đối tượng

int cvFindContours(CvArr* image, CvMemStorage* storage,

CvSeq** first_contour, int header_size=sizeof(CvContour), intmode=CV_RETR_LIST,

int method=CV_CHAIN_APPROX_SIMPLE, CvPoint offset=cvPoint(0, 0))

Hàm này được sử dụng để tìm đường bao của đối tượng thể hiện trong ảnh nhị

phân image. Kết quả tạo ra được tập các đường bao ngoài và bao trong được

chứa trong cấu trúc CvSeqfirst_contour với cách thức sắp xếp quy định

bởi mode.

Hình 3.7 : một ảnh đầu vào (hình trên) được đưa vào hàm cvFindContours thì ta thu được kết

quả như hình dưới, các đường bao tìm thấy sẽ được chia thành 2 dạng là đường bao ngoài (ký hiệu c...) và các đường bao trong ( được xem là lỗ, ký hiệu h....)

Ví dụ hình 3.7 mô tả tính năng tìm kiếm đường bao của hàm cvFindContours. Các đường bao sau khi được xác định sẽ được sắp xếp theo một trật tự nhất định quy đình bởi mode và có các giá trị sau :

Hàm thể hiện ảnh ra giao diện người dùng

void cvShowImage(const char* name, const CvArr* image)

Hàm này dùng để xuất ảnh image ra cửa sổ người dùng được xác định bởi tên cửa sổ name. Hàm này chỉ được sử dụng trong môi trường hỗ trợ giao diện

KDE.

 …………..

Một phần của tài liệu nhận dạng biển báo giao thông hỗ trợ lái xe (Trang 49)

Tải bản đầy đủ (PDF)

(87 trang)