1. Trang chủ
  2. » Luận Văn - Báo Cáo

TÌM HIỂU MỘT SỐ THUẬT TOÁN VÀ XÂY DỰNG CHƯƠNG TRÌNH XỬ LÝ ẢNH CƠ BẢN SỬ DỤNG OPENCV

39 1,3K 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 39
Dung lượng 5,8 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Đề tài : Tìm hiểu một số thuật toán và xây dựng chương trình cơ bản xử lý ảnh sử dụng OpenCV iiLỜI CẢM ƠN Sau hơn hai tháng thực tập và học tập tại Trung Tâm, được sự giúp đỡ tận tìnhcủa

Trang 1

KHOA CÔNG NGHỆ THÔNG TIN

Tel (84-511) 736 949, Fax (84-511) 842 771Website: itf.ud.edu.vn, E-mail: cntt@edu.ud.vn

BÁO CÁO THỰC TẬP TỐT NGHIỆP

NGÀNH CÔNG NGHỆ THÔNG TIN

MÃ NGÀNH : 05115

ĐỀ TÀI : TÌM HIỂU MỘT SỐ THUẬT TOÁN VÀ XÂY DỰNG

CHƯƠNG TRÌNH XỬ LÝ ẢNH CƠ BẢN SỬ DỤNG OPENCV

SINH VIÊN : NGUYỄN NGỌC SANG

ĐIỆN TỬ - TIN HỌC- TỰ ĐỘNG HÓA

MIỀN TRUNG

ĐÀ NẴNG, 02/2012

Trang 2

Đề tài : Tìm hiểu một số thuật toán và xây dựng chương trình cơ bản xử lý ảnh sử dụng OpenCV ii

LỜI CẢM ƠN

Sau hơn hai tháng thực tập và học tập tại Trung Tâm, được sự giúp đỡ tận tìnhcủa các anh chị trong Trung Tâm, em đã có một kiến thức thực tế quan trọng gópphần xác định được công việc của mình trong tương lai và cơ bản hoàn thành đề tài

“tìm hiểu về các thuật toán xử lý ảnh trong OpenCV ” Để đạt được kết quả này, em

đã nỗ lực hết sức đồng thời cũng nhận được rất nhiều sự quan tâm, giúp đỡ, ủng hộcủa các thầy cô, bạn bè và gia đình

Trước hết, em xin gởi lời cảm ơn chân thành đến Khoa Công nghệ Thông tin, trường Đại học Khoa học Tự nhiên đã tạo điều kiện cho em được thực tập tại “Trung Tâm nghiên cứu Điện Tử Tin Học, Tự Động Hóa”

Em cũng xin cảm ơn tất cả các anh chị, cô chú trong trung tâm, đặt biệt là thầy Ngô Văn Sỹ nguyên là giám đốc của trung tâm đã tận tình giúp đỡ tạo điều kiện cho

em hoàn thành chiến thực tập này

Và con cũng xin chân thành cảm ơn gia đình đã luôn động viên, tạo điều kiện tốt nhất cho con học tập và hoàn thành tốt vẫn không tránh khỏi sai sót Kính mong sựcảm thông và đóng góp ý kiến từ các thầy cô và các bạn

Đà Nẵng, Ngày 2 tháng 02 năm 2013

Sinh viên thực hiện

Nguyễn Ngọc Sang

MỤC LỤC

Trang 3

MỞ ĐẦU 1

I Giới thiệu về đơn vị đến thực tập 1

II Giới thiệu bối cảnh của đề tài 2

III Mục đích và ý nghĩa 2

IV Giới thiệu những công việc được giao 2

CHƯƠNG 1 4

GIỚI THIỆU VỀ OPENCV 4

1 Giới thiệu tổng quan 4

1.1 Khái niệm 4

1.2 Lịch sử phát triển 4

1.3 Ứng dụng 5

2 Hướng dẫn cài đặt 5

2.1 Chuẩn bị 5

2.2 Cách thực hiện 5

3 Chương trình đầu tiên 12

3.1 Chương trình 12

3.2 Giải thích 12

3.3 Kết quả 13

CHƯƠNG 2 14

LẬP TRÌNH VỚI OPENCV 14

1 Các kiểu dữ liệu trong OpenCV 14

1.1 OpenCV Iplimage 14

1.2 OpenCV Mat 15

2 Đọc và ghi ảnh 16

3 Video và Camera 17

4 HighGui 18

4.1 Giới thiệu 18

4.2 Các hàm hiển thị 19

4.2.1 Load ảnh từ Disk 19

4.2.2 Tạo một window để chứa ảnh 19

4.2.3 Hiện thị ảnh lên window 19

4.2.4 Một số hàm cần chú ý 19

4.3 Xử lý sự kiện 20

5 Sliders, Trackbars, and Switches 21

6 Truy cập giá trị Pixel 21

6.1 Pixel truy cập đơn giản 21

6.2 Truy cập nhanh Pixel 22

CHƯƠNG 3 23

XỬ LÝ ẢNH TRONG OPENCV 23

Trang 4

Đề tài : Tìm hiểu một số thuật toán và xây dựng chương trình cơ bản xử lý ảnh sử dụng OpenCV iv

2 Phân ngưỡng (Threshold) 24

3 Flood Fill 24

4 Image Pyramids 25

5 Resize 25

CHƯƠNG 4 26

TRIỂN KHAI CHƯƠNG TRÌNH DEMO 26

1 Mô tả 26

2 Chức năng của chương trình 26

3 Giao diện chính 26

4 Chi tiết chương trình 26

4.1 Nhận dữ liệu từ camera 26

4.2 Ghi video 27

4.3 Các hàm đã dùng 27

4.3.1 Resize 27

4.3.2 Smooth 28

4.3.3 Phân ngưỡng 29

4.3.4 Histogram 30

4.3.5 Laplacian 31

KẾT LUẬN 1

Trang 5

I Giới thiệu về đơn vị đến thực tập

1) Giới thiệu tổng quan

- Tên doanh nghiệp: Trung tâm nghiên cứu điện tử, tin học, tự động hóa MiềnTrung

- Tên tiếng Anh: Vietnam Research Institude of Electronics, Information andAutomation - Brand in Central Region

- Tên viết tắt: VIELINA-CR

- Trụ sở: Trụ sở chính của Trung tâm : Tầng 2 – Nhà D, 99 Tô Hiến Thành, QuậnSơn Trà, Tp Đà Nẵng

- Cơ quan ra quyết định thành lập: Viện NC Điện tử, Tin học, Tự động hóa

- Cơ quan chủ quản: Viện NC Điện tử, Tin học, Tự động hóa

2) Quá trình hình thành phát triển

Trung tâm Điện tử, Tin học,Tự động hóa Miền Trung được thành lập theo Quyếtđịnh số: /VĐT-TC ngày 21/02/2012 của Viện trưởng Viện NC Điện tử, Tin học, Tựđộng hoá Trung tâm có các chức năng nhiệm vụ như sau:

- Thực hiện nghiên cứu khoa học và công nghệ các vấn đề do thực tiễn đặt ratrong lĩnh vực Điện tử, Tin học, Tự động hóa và chuyển giao các kết quảnghiên cứu này vào thực tế sản xuất

- Thực hiện bảo trì, bảo dưỡng, sửa chữa, tư vấn kỹ thuật các thiết bị điện tửchuyên dụng, các thiết bị tự động trong công nghiệp nói riêng và trong cácngành kinh tế quốc dân nói chung

- Đào tạo phổ cập, đào tạo lại cho các đối tượng có nhu cầu và các cán bộ khoahọc kỹ thuật tại các doanh nghiệp về chuyên ngành Công nghệ thông tin và Tựđộng hóa

Trang 6

Diện tích đang sử dụng gồm 01 phòng khoảng 50m2 ở tầng 2 nhà D Trường CaoĐẳng Nghề Đà Nẵng, và 02 phòng khoảng 70m2 tầng 3 nhà cho thuê.

II Giới thiệu bối cảnh của đề tài

Sắp tới một số tuyến đường bộ cao tốc đầu tiên sẽ đưa vào khai thác Đây lànhững tuyến đường giao thông hiện đại có lưu lượng thông xe lớn tốc độ nhanh, chắcchắn sẽ đóng góp tích cực vào phát triển kinh tế xã hội nhưng đồng thời cũng đặt ravấn đề lớn về quản lý, vận hành khai thác chúng Công nghệ ITS đã được ứng dụng ởnhiều nước tiến tiến trên thế giới và khu vực với nhiều ứng dụng tiện ích chủ yếugồm:

 Tổ chức mạng lưới thông tin giữa các trung tâm điều hành giao thông;

 Thông tin điều hành và kiểm soát giao thông trên đường

 Thu phí không dừng (ETC)

 Kiểm soát xe tải trọng nặng

 Thông tin về tắc nghẽn và sự cố;

 Thông tin về thời tiết và tình trạng mặt đường;

 Thông tin về thời gian đi lại

 Hỗ trợ thông tin về xe Bus

 Cung cấp thông tin về nơi đỗ xe và thu phí điểm đỗ xe

Tại trung tâm, ngoài những đề tài cấp bộ nghiên cứu, thiết kế chế tạo microinverter còn có những dự án như dự án xây dựng hệ thống bãi giữ xe của trung tâmthành phố Đà Nẵng ,dự án nghiên cứu bộ thí nghiệm điện tử …Thì đề tài mới được đềxuất là ứng dụng xử lý vào xây dựng hệ thống giao thông Do đó ,em được giao cho

đề tài để nghiên cứu : “Tìm hiểu một số thuật toán và xây dựng chương trình xử lýảnh cơ bản sử dụng OpenCV”

III Mục đích và ý nghĩa.

 Cung cấp những kiến thức cơ bản về xử lý ảnh

 Nâng cao chất lượng ảnh

 Với kiến thức về OpenCV và xử lý ảnh tạo tiền đề cho quá trình xây dựng hệ thống quản lý giám sát giao thông

IV Giới thiệu những công việc được giao.

Với đề tài trên ta cần nghiên cứu:

 Tìm hiểu về OpenCV

 Tìm hiểu về xử lý ảnh trong OpenCV

 Tìm hiểu thuật toán xử lý ảnh về tăng cường độ phân giải ảnh

 Xây dựng chương trình

Nội dung bài báo cáo được trình bày gồm các phần chính như sau:

Trang 7

MỞ ĐẦU

Chương 1: GIỚI THIỆU VỀ OPENCV

Chương 2: LẬP TRÌNH VỚI OPENCV

Chương 3: XỬ LÝ ẢNH TRONG OPENCV

Chương 4: TRIỂN KHAI CHƯƠNG TRÌNH DEMO

KẾT LUẬN

Trang 8

Đề tài : Tìm hiểu một số thuật toán và xây dựng chương trình cơ bản xử lý ảnh sử dụng OpenCV 4

CHƯƠNG 1

GIỚI THIỆU VỀ OPENCV

1 Giới thiệu tổng quan

1.1.Khái niệm

OpenCV là open source (xem http://opensource.org) computer vision library

có sẵn ở http://SourceForge.net/projects/opencvlibrary Thư viện này được viết trong

C và C++ và chạy dưới Linux, Windows và Mac OS X Có phát triển tích hợp với cácgiao diện cho Python, Ruby, Matlab, và các ngôn ngữ khác

Intel phát hành phiên bản đầu tiên của OpenCV vào năm 1999 Ban đầu, nóyêu cầu như là thư viện xử lý hình ảnh của Intel Nhưng các vấn đề phụ thuộc đãđược gỡ bỏ và bây giờ bạn có thể sử dụng OpenCV là một thư viện độc lập

1.2.Lịch sử phát triển

OpenCV phát triển từ một nghiên cứu Intel khởi xướng cho các ứng dụng tậndụng CPU tối đa Hướng đến kết quả này, Intel khởi trương nhiều dự án gồm real-time ray tracing và 3D display walls Một trong những người làm việc cho Intel ở thờiđiểm đó đang thăm các trường đại học và nhận thấy rằng một số trường học đỉnh cao,chẳng hạn MIT Media Lab, có cơ sở phát triển và họ đã bộ mã đến sinh viên và màcho mỗi sinh viên phát triễn ứng dụng của mình dựa trên nền tảng đó

Do đó, OpenCV được hiểu như một cách làm hạ tầng sẵn có Với hỗ trợ củaIntel’s Performance Library Team, OpenCV bắt đầu với lõi của các tiên chuẩn mã vàthuật toán được thực hiện được gửi đến các thành viên của Intel’s Russian libraryteam

Chủ chốt trong các nhóm người Nga là Vadim Pisarevsky, người quản lý, mã,

và tối ưu nhiều trong OpenCV và người có nỗ lực với OpenCV Cùng với anh, VictorEruhimov hỗ trợ phát triển cấu trúc ban đầu, và Valery Kuriakin điều hành Russianlab và hỗ trợ lớn cho sự phát triển này Mục đích cho OpenCV ở lúc bắt đầu:

• Phát triển mã nguồn không chỉ mở mà tối ưu ,Không phát triển lại cái đã có trước

• Phổ biến kiến thức cho các thành viên, chương trình đọc dể hiểu và khả chuyển

• Các ứng dụng thương mại dựa trên vision cao cấp bởi mã khả chuyển, thựchiện tối ưu sẵn có miễn phí—với một bản quyền mà không đòi hỏi các ứng dụngthương mại là mở hay miễn phí

Nhưng mục tiêu này tạo thành “lý do” cho phép các ứng dụng gia tăng nhu cầucho các processor nhanh Dẫn đến nâng cấp các processor nhanh hơn mà tạo ra nhucầu cho Intel bán các extra software Đó là lý do mã mở và miễn phí này lại phát triển

từ một công ty software

Bây giờ có xấp xỉ hai triệu download của OpenCV, và số này tăng trung bình26,000 downloads một tháng.User group bây giờ gần đến 20,000 members OpenCVnhận nhiều hợp tác bởi nhiều người dùng và trung tâm bên ngoài công ty Ngày nay,

Trang 9

OpenCV là một lĩnh vực tích cực ở vài tổ chức, do mong muốn thấy nhiều cậpnhâthtrong hiệu chỉnh nhiều camera, nhận biết độ sâu, các phương pháp trộn visionvới các laser range finder, và nhận biết mẫu tốt hơn cũng như nhiều hỗ trợ cho cácnhu cầu robot

1.3.Ứng dụng

Khi alpha release của nó January 1999, OpenCV đã được dùng nhiều trong cácứng dụng, sản phẩm, và nỗ lực nghiên cứu Các ứng dụng này gồm nối ảnh với nhautrong bản đồ vệ tinh và web, sắp xếp ảnh quét, giảm nhiễu ảnh y học, phân tích đốitượng, an ninh và các hệ dò xâm nhập, các hệ giám sát tự động và an toàn, các hệthẩm tra sản xuất, hiện chỉnh camera, các ứng dụng quân sự, và các phương tiện trênkhông, dưới đất, và dưới nước không người Nó được dùng trong nhận diện âm thành

và âm nhạc, nơi kỹ thuật nhận biết vision được áp dụng với các ảnh spectrogram âmthanh OpenCV là phần quan trọng ứng dụng trong robot

Trang 10

Đề tài : Tìm hiểu một số thuật toán và xây dựng chương trình cơ bản xử lý ảnh sử dụng OpenCV 6

Giải nén

Sau khi giải nén xong ,t hay đổi giá trị biến “Path” trong máy tính của bạn

Click chuột phải vào máy tính chọn properties, sau đó chọn tab “advanced” và click “Environment Variables”

Trang 11

Chọn edit để thêm vào

Trang 12

Đề tài : Tìm hiểu một số thuật toán và xây dựng chương trình cơ bản xử lý ảnh sử dụng OpenCV 8

Thêm vào Path Variable:

C:\opencv\opencv\build\x86\vc10\bin

C:\opencv\opencv\build\common\tbb\ia32\vc10

Trang 13

Tạo 1 project C++ trong visual studio ,click chuột phải chọn properties

Trang 14

Đề tài : Tìm hiểu một số thuật toán và xây dựng chương trình cơ bản xử lý ảnh sử dụng OpenCV 10

Chọn C/C++ vài edit the Additional Include Directories.thêm vào C:\opencv\opencv\build\include\opencv

C:\opencv\opencv\build\include

Tiếp tục chọn linker và chọn Additional Library Directories,

Trang 15

Thêm vào C:\opencv\opencv\build\x86\vc10\lib

Nhấp chuột vào dấu cộng chọn input ,chon additional Dependencies thêm vào có thư viện

Trang 16

Đề tài : Tìm hiểu một số thuật toán và xây dựng chương trình cơ bản xử lý ảnh sử dụng OpenCV 12

Đã hoàn tất quá trình cài đặt

3 Chương trình đầu tiên

IplImage* img = cvLoadImage( "C:/lena.png" );

cvNamedWindow( "Example1" , CV_WINDOW_AUTOSIZE );

cvShowImage( "Example1" , img );

Trang 17

Đây là chương trình đọc ảnh từ "C:/lena.png" và hiển thị ra màn hình các lệnh sẽ được giải thích ở chương sau

3.3.Kết quả

Trang 18

Đề tài : Tìm hiểu một số thuật toán và xây dựng chương trình cơ bản xử lý ảnh sử dụng OpenCV 14

CHƯƠNG 2

LẬP TRÌNH VỚI OPENCV

1 Các kiểu dữ liệu trong OpenCV

OpenCV có vài data type cơ sở Bạn có thể xem xét chi tiết các structure mô tả

như sau (cũng như các structure khác) trong types_c.h header file, mà ở

/OpenCV/core/include directory của cài cặt OpenCV.

 CvPoint là structure đơn giản với hai integer members, x và y

 CvPoint2D32f và CvPoint3D32f Cả 2 có hai members x và y, mà cả hai là các

số float, CvPoint3D32f chứa phần tử thứ ba z

 CvSize các phần tử của nó là width và height, mà cả hai là integer Nếu bạnmuốn các số float, dùng CvSize2D32f

 CvRect sự kết hợp CvPoint và CvSize; nó chứa bốn member: x, y, width, vàheight

 CvScalar, mà là một tập 4 số double val[4]

Tất cả những data type này có các contructor,các contructor này đều có tên gầngiống với đều datatype nhưng không inhoa chữ đầu tiên

Giả sử bạn muốn vẽ một rectangle trắng giữa (5, 10) và (20, 30); bạn có thể đơn giản gọi:

cvRectangle(

myImg,cvPoint(5,10),cvPoint(20,30),cvScalar(255,255,255));

1.1.OpenCV Iplimage

OpenCV lưu trữ hình ảnh như là một cấu trúc C, IplImage IPL là viết tắt của Thư viện xử lý hình ảnh Các kiểu dữ liệu IplImage được định nghĩa trong CXCORE

CvPoint int x, y Point in imageCvPoint2D32f float x, y Points in ℜ2CvPoint3D32f float x, y, z Points in ℜ3CvSize int width, height Size of imageCvRect int x, y, width,

height Portion of imageCvScalar double val[4] RGBA value

Trang 19

Ngoài dữ liệu pixel liệu, nó có chứa một số lĩnh vực mô tả, gọi chung là

Header Image Chúng bao gồm

 Chiều rộng - chiều rộng hình ảnh theo pixel

 Chiều cao – hình ảnh chiều cao tính bằng pixel

 Chiều sâu - một trong những hằng số được xác định trước cho biết số bit cho mỗi điểm ảnh trên một kênh

 nChannels - số lượng của các kênh dữ liệu (1-4) Mỗi kênh có chứa một loại dữ liệu pixel.Ví dụ, hình ảnh RGB có ba kênh màu đỏ, màu xanh lá cây, và cường độ màu xanh

1.2.OpenCV Mat

Trong OpenCV không có vector , khái niệm của một matrix trong OpenCV

là có phần trừu tượng hơn khái niệm ta học trong lớp đại số tuyền tính Về cụ thể,các phần tử của một matrix tự chúng không là các số đơn giản Do đó, matrix cóthể gồm các 32-bit floats (CV_32FC1), của các unsigned integer 8-bit triplets(CV_8UC3), hay vô số các element khác Một element của CvMat không cần thiết

là một số đơn Có thể biểu diễn nhiều giá trị cho một entry đơn trong matrix chophép ta làm nhiều thứ như biểu diễn nhiều channel màu trong một RGB image.Các matrix có một width, height, type, step (chiều dài của một row theo các byte,không ints hay floats), và một pointer đến một data array (và một vài thứ mà tachưa thể nói) Bạn có thể truy cập những members này trực tiếp bởi referencing lạimột pointer đến CvMat hay, cho một vài element phổ biến hơn, bởi dùng cácaccessor function được cung cấp Ví dụ, để lấy size của một matrix, bạn có thể lấythông tin bạn muốn một trong bởi gọi cvGetSize(CvMat*), mà trả về một CvSizestructure, hay bởi truy cập height và width độc lập với các constructs như matrix-

Trang 20

Đề tài : Tìm hiểu một số thuật toán và xây dựng chương trình cơ bản xử lý ảnh sử dụng OpenCV 16

} CvMat;

Phổ biến là dùng cvCreateMat(), nó là sự kết hợp của cvCreateMatHeader() vàcvCreateData() cvCreateMatHeader() tạo CvMat không cấp memory cho data, trongkhi cvCreateData() handles cấp phát data Đôi khi chỉ cvCreateMatHeader() được đòihỏi, một trong vì bạn đã cấp data cho vài nguyên nhân khác hay vì bạn chưa thực sựcần cấp nó Hàm thứ ba để dùng cvCloneMat(CvMat*), mà tạo matrix mới từ một cáihiện có.Khi matrix không còn cần nữa, nó có thể được giải phóng bởi gọicvReleaseMat(CvMat**)

2 Đọc và ghi ảnh

Hình ảnh được lưu và hiển thị dễ dàng với OpenCV.Chương trình dưới đây là

để đọc một hình ảnh từ tập tin và viết nó như là một tập tin thứ hai, trong một địnhdạng nén khác nhau

Ngày đăng: 30/12/2015, 20:33

HÌNH ẢNH LIÊN QUAN

Hình ảnh được lưu và hiển thị dễ dàng với OpenCV.Chương  trình dưới đây  là - TÌM HIỂU MỘT SỐ THUẬT TOÁN VÀ XÂY DỰNG CHƯƠNG TRÌNH XỬ LÝ ẢNH CƠ BẢN SỬ DỤNG OPENCV
nh ảnh được lưu và hiển thị dễ dàng với OpenCV.Chương trình dưới đây là (Trang 20)
Bảng sự kiện1 - TÌM HIỂU MỘT SỐ THUẬT TOÁN VÀ XÂY DỰNG CHƯƠNG TRÌNH XỬ LÝ ẢNH CƠ BẢN SỬ DỤNG OPENCV
Bảng s ự kiện1 (Trang 24)
Bảng sự kiện1 - TÌM HIỂU MỘT SỐ THUẬT TOÁN VÀ XÂY DỰNG CHƯƠNG TRÌNH XỬ LÝ ẢNH CƠ BẢN SỬ DỤNG OPENCV
Bảng s ự kiện1 (Trang 24)

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w