Cháy rừng là một thảm họa gây thiệt hại lớn đối với tính mạng và tài sản của con người, tài nguyên rừng và môi trường sống. Ảnh hưởng của nó không những tác động đến một quốc gia mà còn ảnh hưởng đến cả khu vực và toàn cầu. Trong vài thập kỷ gần đây, biến đổi khí hậu với những đợt nóng hạn kéo dài bất thường đã làm cho cháy rừng trở thành thảm họa ngày càng nghiêm trọng. theo số liệu của cục kiểm lâm, ở Việt Nam bình quân mỗi năm diện tích rừng bị thiệt hại về người , hủy hoại môi trường sống, gây ô nhiễm môi trường…, nếu không được kiểm soát kịp thời thì hậu quả rất nặng nề. vì vậy việc phòng chống cháy rừng đóng một vai trò hết sức quan trọng.
Trang 1LỜI NÓI ĐẦU
Cháy rừng là một thảm họa gây thiệt hại lớn đối với tính mạng và tài sản củacon người, tài nguyên rừng và môi trường sống Ảnh hưởng của nó không nhữngtác động đến một quốc gia mà còn ảnh hưởng đến cả khu vực và toàn cầu Trong vàithập kỷ gần đây, biến đổi khí hậu với những đợt nóng hạn kéo dài bất thường đãlàm cho cháy rừng trở thành thảm họa ngày càng nghiêm trọng theo số liệu của cụckiểm lâm, ở Việt Nam bình quân mỗi năm diện tích rừng bị thiệt hại về người , hủyhoại môi trường sống, gây ô nhiễm môi trường…, nếu không được kiểm soát kịpthời thì hậu quả rất nặng nề vì vậy việc phòng chống cháy rừng đóng một vai tròhết sức quan trọng
Tuy nhiên, việc phòng chống cháy rừng là một việc hêt sức khó khăn vìnguyên nhân phát sinh là rất nhiều và khó đoán trước Để giải quyết vấn đề này thìviệc phát hiện cháy sớm để có biện pháp kịp thời ứng phó được xem là khả thi nhất.Với sự phát triển nhanh chóng của công nghệ thì nhiều hệ thống đã ra đời để đưa racảnh báo cháy rừng nhờ cảm biến ( cảm biến nhiệt độ Cám biến khói…), hệ thốngcảnh báo cháy rừng thông qua vệ tinh, hệ thống cảnh báo cháy rừng phát hiện quavideo từ camera quan trắc Tuy nhiên, qua thực tế sử dụng thì hệ thống dùngphương pháp phân tích video, ảnh mang lại nhiều ưu điểm và chính xác hơn
Với một camera có độ phân giải tốt thì hoàn toàn có thể giám sát được mộtvùng rừng rộng lớn với độ chính xác chấp nhận được Trong khi đó hệ thống dùngcảm biến thì có nhược điểm là vùng giám sát rất nhỏ, và vấn đề năng lượng cungcấp cho các nút cảm biến cũng như tuổi thọ của các nút này bị ảnh hưởng rất nhiềubởi môi trường và điều kiện địa lí Do đó độ chính xác của hệ thống dùng cảm biếncũng không cao Đối với hệ thống cảnh báo dùng vệ tinh thì có thể bao quát vùngrộng, tuy nhiên lại có một số hạn chế như: độ phân giải của ảnh không cao, thờigian thực không được đáp ứng, đắt đỏ, ảnh hưởng của thời tiết làm giảm độ chínhxác… vậy nên dùng xử lý video được xem là một hệ thống tối ưu cho đến thời điểmnày
Đã có rất nhiều gải thuật được đưa ra trong việc xủ lí ảnh trong các video đểđưa cảnh báo được cung cấp bởi nhiều chuyên gia trên thế giới Các giải thuật đềudựa trên sự khác biệt về hai điểm chính là chuyển động và màu sắc của ngọn lửa vàkhói Việc xác định xác định chuyển động là bước đầu tiên để tìm tìm ra vùng cókhả năng là lửa hoặc khói Thuật toán “ Subtraction Background” được dùng như
Trang 2một phương pháp truyền thống trong xác định chuyển động từ các chuỗi frametrong video Bước tiếp theo sẽ phân loại, đánh giá các vùng này dựa trên thông tin,đặc trưng về màu săc để đi đến kết luận Đặc trăng màu sắc của ngọn lửa thì khá rõràng, trong khi đó phân biệt khói có ít đặc trưng hơn Trong khi khuôn khổ đè tàinày, em phát triển dựa theo phương pháp thông dụng trên, tuy nhiên bổ sung thêmmột số ý tưởng về cả chuyển động và màu sắc trong quá trình thực nghiệm để tănghiệu quả phát hiện đám cháy Ngoài ra, nhằm đảm bảo tầm bao quát rộng cũng nhưtăng độ chính xác của phần mềm trong nhiều trường hợp khác nhau, em sử dụngthêm thuật toán panorama ghép dử liệu hình ảnh đầu vào từ hai camera đặt gần nhau
để cho khung hình rộng hơn Đây cũng là một hướng mới trong đề tài của em
Em xin chân thành cảm ơn T.s……… đã tận tình hướngdẫn em thực hiện đề tài này!
Em xin cam đoan đây là công trình nghiên cứu khoa học độc lập của riêng em.Các số liệu sử dụng phân tích trong đồ án có nguồn gốc rõ ràng, đã công bố theođúng quy định Các kết quả nghiên cứu trong đồ án do em tự tìm hiểu, phân tíchmột cách trung thực, khách quan và phù hợp với thực tiễn của Việt Nam Các kếtquả này chưa từng được công bố trong bất kỳ nghiên cứu nào khác
TÓM TẮT ĐỒ ÁN
Trang 3Mục đích của đồ án là tìm hiểu về hệ thống cảnh báo cháy rừng và phát triểnmột phần mềm xử lý hình ảnh thu được từ cảm biến hình ảnh và đưa ra cảnh báomột cách tự động Để ứng dụng được vào hệ thống mạng cảm biến, phần mềm cầnghép ảnh từ các nút mạng khác nhau để tạo ra một vùng bao quát rộng hơn trước khi
xử lý và phát hiện đám cháy Giải thuật phát hiện đám cháy rừng được đề xuất trong
đồ án dựa trên các đặc điểm về màu sắc của lữa và khói, gồm hai bước chính:khoanh vùng các thành phần trong khung hình mà camera giám sát chụp được, sau
đó phân tích, đánh giá chúng và đưa ra cảnh báo nếu có đám cháy Việc ứng dụng
xử lý hình ảnh đem lại hiệu quả cao hơn trong việc xử lý và phát hiện đám cháy sovới các hệ thống đã có Phần mềm được viết bằng ngôn ngữ lập trình MatLab Phầnmềm có giao diện thân thiện, dể sử dụng, hiệu quả cao
ABSTRACT
Trang 4The aim of this project is to learn about forest fire warring system and devolop
a software which processes Image from image sensor and provides alertsautomatically To successfully apply to sensor network, the software need tocomposite image from the network to create broader coverage area beforeprocessing and detecting fires Proposed algorithm is this project for detecting fire isbased on the characteristics of color of fire and color smoke It consists of two mainsteps: zonation the components in the camera frame capture, then analyze, evaluateand give alerts if there is a fire The image processing applications sensors bringsbetter efficiency in processing and detecting fires in comparison with existingsystems The software is written in MatLab programming language, the softwarehas friendly interface, easy to use and highly effective
Trang 5ra kết quả mong muốn kết quả đầu ra của một quá trình xử lý ảnh có thể là một ảnh
“tốt hơn” hoặc một kết luận dựa trên việc phân tích và xử lý bức ảnh
Ảnh có thể xem là tập hợp các điểm ảnh và mỗi điểm ảnh được xem như làđặc trưng cường độ sáng hay một dấu hiệu nào đó tại một vị trí nào đó của đốitượng trong không gian và nó có thể xem như một hàm n biến p(c1, c2,…,cn) Do
đó, ảnh trong xử lý ảnh có thể xem như ảnh n chiều
xử lý ảnh số thuận lợi Năm 1964, máy tính đã có khả năng xử lý và nâng cao chấtlượng ảnh từ mặt trăng và vệ tinh Ranger 7 của mỹ bao gồm: làm nổi đường biên,lưu ảnh
Từ năm 1964 đến nay, các phương tiện xử lý, nâng cao chất lượng nhận dạngảnh phát triển không ngừng Các phương pháp tri thức nhân tạo như mạng nơ ron
Ảnh
Xử lý ảnh
Ảnh “tốthơn”
Kết luận
Hình 1 1 Quá trình xử lý ảnh
Trang 6nhân tạo, các thuật toán xử lý hiện đại và cải tiến, các công cụ nén ảnh ngày càngđược áp dụng rộng rãi và thu nhiều kết quả khả quan.
1.3 Các ứng dụng của xử lý ảnh số
Biến đổi ảnh ( ImageTransform)
Trong xử lý ảnh do số điểm ảnh lớn hơn yêu cầu tính toán nhiều ( độ phức tạptính toán cao) đòi hỏi dung lượng bộ nhớ lớn, thời gian tính toán lâu Các phươngpháp khoa học áp dụng kinh điển áp dụng cho xử lý hình ảnh hầu hết khó khả thi.Người ta sử dụng các phép toán tương đương hoặc biến đổi sang miền xử lý khác để
dễ tính toán Sau khi xử lý dễ dàng hơn được thực hiện, dùng biến đổi ngược đểđưa về miền xác định ban đầu, các biến đổi thường gặp trong xử lý ảnh gồm:
Biến đổi Fourier, Cosin, Sin
Biến đổi (mô tả) ảnh bằng tích chập, tích Kronecker
Các biến đổi khác như Karhumen loeve, Hademard
Nén ảnh
Ảnh dù ở dạng nào vẫn chiếm không gian nhớ rất lớn khi mô tả ảnh người ta
đã đưa kỹ thuật nén ảnh vào Hiện nay, các chuẩn MPEG (Moving Picrure ExpertsGroup) được dùng với ảnh đang phát huy hiệu quả
1.4 Các vấn đề cơ bản trong xử lý ảnh số
Điểm ảnh (Picture Element)
Ảnh gốc (ảnh tự nhiên) là ảnh liên tục về không gian và độ sáng để xử lýbằng máy tính (số), ảnh cần phải được số hóa Số hóa ảnh là sự biến đổi gần đúngmột ảnh liên tục thành một tập điểm phù hợp với ảnh thật về vị trí (không gian) và
độ sáng (mức xám) Khoảng cách giữa các điểm ảnh đó được thiết lập sao cho mắtngười không phân biệt được ranh giới giữa chúng Mỗi một điễm như vậy gọi làđiểm ảnh (PEL: Piture Element) hay gọi tắt là Pixel Trong khuôn khổ ảnh haychiều, mỗi pixel ứng với cặp tọa độ (x,y)
Điểm ảnh (pixel) là một phần tử của ảnh số tại tọa độ (x,y) với độ xám hoặcmàu nhất định Kích thước và khoảng cách giữa các điểm ảnh đó được chọn thíchhợp sao cho mắt người cảm nhận sự liên tục về không gian và mức xám (hoặc màu)của ảnh số gần như ảnh thật mỗi phần tử trong ma trận được gọi là một phần tửảnh
Độ phân giải của ảnh
Trang 7Độ phân giải (Resplution) của ảnh là mật độ điểm ảnh được ấn định trên mộtảnh số được hiển thị Theo định nghĩa, khoảng cách giữa các điểm ảnh phải đượcchọn sao cho mắt người vẫn thấy được sự liên tục của ảnh Việc lựa chọn khoảngcách thích hợp tạo nên một mật độ phân bổ, đó chính là độ phân giải và được phân
bố theo trục x và y trong không gian hai chiều
Ví dụ: Độ phân giải của ảnh trên màn hình CGA (Color Graphic Adaptor) làmột lưới điểm theo chiều ngang màn hình: 320 điểm chiều dọc 200 điểm chiều
ngang (320 200) Rõ ràng, cùng dộ phân giải 320 200, hiển thị trên màn hìnhCGA 12” cho mật độ điểm ảnh cao hơn trên màn hình CGA 17” Lý do: cùng một
độ phân giải nhưng diện tích tích màn hình rộng hơn thì độ liên tục của các điểmkém hơn
Mức xám của ảnh
Một điểm ảnh (Pixel) có hai đặc trưng cơ bản là vị trí (x,y) của một điểm ảnh
và độ xám của nó Dưới đây chúng ta xem xét một số khái niệm và thuật ngữthường dùng trong xử lý ảnh
Mức xám của điểm ảnh là cường độ sáng của nó được gán bằng giá trị số tạiđiểm đó
Các thang giá trị mức xám thông thường: 16, 32, 64, 128, 256 (mức 256 làmức phổ dụng lý do: từ kỹ thuật máy tính dùng 1 byte (8 bit) để biểu diễn mứcxám: Mức xám dùng 1 byte biểu diễn: = 256 mức tức là từ 0 đến 255)
Ảnh đen trắng: là ảnh có hai màu đen, trắng (không chứa màu khác) với mứcxám ở các điểm ảnh có thể khác nhau
ảnh nhị phân: ảnh chỉ có 2 mức đen trắng phân biệt tức dùng 1 bit mô tả 21mức khác nhau Nói cách khác: mỗi điểm ảnh của ảnh nhị phân chỉ có thể là
0 hoặc 1
Ảnh màu: trong khuôn khổ lý thuyết ba màu RBG (Red, Blue, Green) để tạonên thế giới màu, người ta thường dùng 3 byte để mô tả mức màu, khi đó cácgiá trị màu: = ~ 16.7 triệu màu
Tỉ số tín hiệu cực đại trên nhiễu (PSNR)
Cụm từ tỉ số tín hiệu cực đại trên nhiễu PSNR (peak signal-to-noise ratio) làmột thuật ngữ dùng để tính tỉ lệ giữa giá trị năng lượng tối đa của một tín hiệu và
Trang 8năng lượng nhiễu ảnh hưởng đến độ chính xác của thông tin Bởi vì có rất nhiều tínhiệu có phạm vi biến đổi rộng, nên PSNR thường được biểu diễn bởi đơn vịlogarithm (decibel).
PSNR được sử dụng để đo chất lượng tín hiệu khôi phục của các thuật toánnén có mất mát dữ liệu (lossy compression) (dùng trong nén ảnh) Tín hiệu trongtrường hợp này là dữ liệu gốc và nhiễu là các lỗi xuất hiện khi nén Khi so sánh cácthuật toán nén thường dựa vào sự cảm nhận gần chính xác của con người đối với dữliệu được khôi phục, chính vì thế trong một số trường hợp dữ liệu được khôi phụccủa thuật toán này dường như có chất lượng tốt hơn những cái khác, mặc dù nó cógiá trị PSNR thấp hơn (thông thương PSNR càng cao thì chát lượng dữ liệu đượckhôi phục càng tốt) vì vậy khi so sánh kết quả của hai thuật toán cần phải dựa trêncodec giống nhau và nội dung của dữ liệu cũng phải giống nhau
Cách đơn giản nhất là định nghĩa thông qua MSE (mean squared eror) đượcdùng cho ảnh 2 chiều có kích thước m n trong đó I và K là ảnh gốc và ảnh đượckhôi phục tương ứng:
Giá trị thông thường của PSNR Trong lossy ảnh và nén video nằm từ 30 đến
50 dB, giá trị càng cao thì càng tốt Giá trị có thể chấp nhận được khi truyền tín hiệukhông dây có tổn thất khoảng từ 20 dB đến 25 dB
1.5 Các hệ màu cơ bản
Trang 91.5.1 Hệ màu RBG
Mô hình màu RBG sử dụng mô hình bổ sung trong đó ánh sáng đỏ, xanh lácây và xanh lam được tổ hợp với nhau theo nhiều phương thức khác nhau để tạo rathành các màu khác Từ viết tắt RBG trong tiếng anh có nghĩa là ánh sáng bổ sung
Hình 1 2 Hệ màu RGB
Cũng lưu ý rằng mô hình RGB tự bản thân có không định nghĩa thế nào là
“đỏ”, “xanh lá cây” và “xanh lam” một cách chính xác, vì thế với cùng các gí trịnhư nhau của RGB có thể mô tả các màu tương đối khac nhau trên các thiết bị khácnhau có cùng một mô hình màu Trong khi chúng cùng chia sẻ một mô hình màuchung, không gian màu thực sự của chúng là dao động một cách đáng kể
Một trong những ứng dụng phổ biến nhất của mô hình RGB là việc hiển thịmàu sắc trong các ống tia âm cực, màn hình tinh thể lỏng hay màn hình plasma,chẳng hạn như màn hình máy tính hay tivi Mổi điểm ảnh trên màn hình có thể đượcthể hiện trong bộ nhớ máy tính như là các giá trị độc lập của màu đỏ, xanh lá cây vàxanh lam Các giá trị này được chuyển đổi thành các cường độ và gửi tới màn hình.Bằng việc sử dụng các tổ hợp thích hợp của các cường độ ánh sáng đỏ, xanh lá cây
và xanh lam, màn hình có thể tái tạo lại phần lớn các màu trong khoảng đen vàtrắng Các phần cứng hiển thị điển hình được sử dụng cho các màn hình máy tínhtrong năm 2003 sử dụng tổng cộng 24 bit thông tin cho mỗi điểm ảnh (trong tiếnganh thông thường được biết đến như bits per pixel hay bpp) Nó tương ứng với mỗi
8 bit cho màu đỏ, xanh lá cây và xanh lam, tạo thành một tổ hợp 256 các giá trị cóthể, hay 256 mức cường độ cho mỗi màu Với hệ thống như thế, khoảng 16,7 triệumàu rời rạc có thể tái tạo
Trang 10Khi biểu diễn dưới dạng số, các giá trị RGB trong mô hình 24 bpp thôngthường được ghi bằng cặp ba số nguyên giữa 0 và 255, mỗi số đại diện cho cường
độ của màu đỏ, xanh lá cây, xanh lam trong trật tự như thế nào Số lượng màu tối đa
sẽ là 256*256*256 hay 16.777.216 màu
1.5.2 Hệ màu CMYK
Hình 1 3 Hệ màu CMYK
CMYK là không gian màu được sử dụng phổ biến trong nghành công nghiêp
in ấn Ý tưởng cơ bản của hệ không gian này là dùng 4 màu sắc cơ bản để phục vụcho việc pha trộn mực in Trên thực tế, người ta dùng 3 màu là C = Cyan: xanh lơ,
M = Megenta: hồng xẫm, Y = Yellow: vàng để biểu diển các màu sắc khác nhau.Nếu lấy màu hồng xẫm cộng với vàng sẽ ra màu đỏ, màu xẫm kết hợp với xanh lơ
sẽ cho xanh lam… sự kết hợp giữa ba màu trên sẽ cho ra màu đen, tuy nhiên màuđen ở đây không phải là đen tuyệt đối và thường có độ tương phản lớn, nên trongnghành in, để tiết kiệm mực in người ta thêm vào màu đen để in những chi tiết cómàu đen thay vì phải kết hợp 3 màu sức trên Và như vậy ta có hệ màu CMYK, chữ
K ở đây là để ý hiệu màu đen (Black)
Nguyên lý làm việc của hệ màu này như sau: Trên một nền giấy trắng , khimỗi màu này được in lên sẽ loại bỏ dần đi thành phần màu trắng 3 màu C, M, Ykhác nhau in theo những tỉ lệ khác nhau sẽ loại bỏ đi thành phần đó một cách khácnhau và cuối cùng cho ta màu sắc cần in khi cần in màu đen, thay vì phải in cả 3màu người ta dùng màu đen để in lên Nguyên lý này khác với nguyên lý làm việccủa hệ màu RGB ở chổ hẹ RGB là sự kết hợp của các thành phần màu, còn hệCMYK là sự loại bỏ lẫn nhau của các thành phần màu
Trang 111.5.3 Hệ màu HSV
HSV là hệ màu được dùng nhiều trong việc chỉnh sữa ảnh, phân tích ảnh vàmột phần của lĩnh vực thị giác máy tính, dựa vài 3 thông số sau để mô tả màu sắc:
H = Hue: màu sắc, S = Saturation: độ đậm đặc, sự bảo hòa, V = value: giá trị cường
độ sáng Không gian màu này thường được biểu diễn dưới dạng hình trụ hoặc hìnhnón
Hình 1 4 Hệ màu HSV
Theo đó, đi theo vòng tròn từ 0 – 360 độ là trường biểu diễn màu sắc(Hue).Trường này bắt đầu từ màu đỏ đầu tiên (red primary) tới màu xanh lục đầutiên (green primary) nằm trong khoảng 0 – 120 độ, từ 120 – 240 độ là màu xanh lụctới xanh lơ (green primary – blue primary) Từ 240 – 360 độ là màu đen tới lại màuđỏ
Hình 1 5 Hình tròn biểu diễn màu sắc (Hue)
Theo như cách biểu diễn không gian màu theo hình trụ như trên, đi từ giá trị
độ sáng (V) được biểu diển bằng cách đi từ dưới đáy hình trụ lên và nằm trongkhoảng 0 – 1 Ở đáy hình trụ V có giá trị 0, là tốt nhất và trên đỉnh hình trụ là độsáng lớn nhất (V=1) Đi từ tâm hình trụ ra mặt trụ là giá trị bão hòa của màu sắc (S)
Trang 12S có giá trị từ 0 – 1 S = 0 ứng với tâm hình trụ là chỗ màu sắc là nhạt nhất S = 1 ởngoài mặt trụ, là nơi mà giá trị màu sắc là đậm đặc nhất.
Như vậy với mỗi giá trị (H, S,V) sẽ cho ta một màu sắc mà ở đó mô tả đầy đủthông tin về màu sắc, độ đậm đặc và độ sáng của màu đó
1.6 Kết luận
Chương 1 đã trình bày về cơ sở xử lý ảnh, bao gồm khái niệm, nguồn gốc xử
lý ảnh, các ứng dụng và các vấn đề cơ bản của xử lý ảnh, ngoài ra còn đề cập đến ba
hệ màu thông dụng trong việc số hóa ảnh, các lý thuyết cơ bản này là cần thiết và làtiền đề cho các bước tiếp theo trong đồ án Cấu trúc của một hệ thống xử lý ảnh vàcác vấn đề liên quan sẽ được trình bày trong chương 2
Trang 13CHƯƠNG 2 CẤU TRÚC CỦA MỘT HỆ THỐNG XỬ LÝ
ẢNH VÀ CÁC VẤN ĐỀ LIÊN QUAN2.1 Ngôn ngữ lập trình C# và phần mềm Microsoft Visual Studio
C# là một ngôn ngữ lập trình hướng đối tượng được phát triển bởi Mirosoft,
là phần khởi đầu cho kế hoạch NET của họ Tên của ngôn ngữ bao gồm ký tự thăngtheo Microsoft nhưng theo ECMA là C#, chỉ bao gồm dấu số thường Microsoftphát triển C# dựa trên C++ và Java C# được miêu tả là ngôn ngữ có được sự cânbằng giữa C++, Visua Basix, Delphi và Java
C# được thiết kế chủ yếu bởi Anders Hejblsberg, kiến trúc sư phàn mềm nổitiếng với các sản phẩm Turbo Pascal, Delphi, J++, WFC
C#, theo một hướng nào đó, là ngôn ngữ lập trình phản ánh trực tiếp nhấtđến NET Framework mà tất cả các chương trình NET chạy, và nó phụ thuộc mạnh
mẽ vào Framework này Mọi dữ liệu cơ sở đều là đối tượng, được cấp phát và hủy
bỏ bởi trình dọn rác Gacbage – Collector(GC), và nhiều kiểu trừu tượng khác chẳnghạn như class, delegate, interface, exception, … Phản ánh rõ ràng những đặc trưngcủa NET runtime
2.1.1 Đặc trưng của C#
C# là một ngôn ngữ đơn giản:
C# loại bỏ được một vài sự phức tạp và rối rắm của ngôn ngữ C++ vàJava
C# khá giống C/C++ về diện mạo, cú pháp, biểu thức, toán tử
Các chức năng của C# được lấy trực tiếp từ các ngôn ngữ C/C++ nhưngđược cải tiến để ngôn ngữ đơn giản hơn
C# là ngôn ngữ hiện đại:
Xử lý ngoại lệ
Thu gom bộ nhớ tự động
Có những kiểu dữ liệu mở rộng
Bảo mật mã nguồn
Trang 14 C# hỗ trợ tất cả các đặc tính của ngôn ngữ hướng đối tượng:
C# là ngôn ngữ sử dụng giới hạn những từ khóa Phần lớn những từ khóa
dùng để mô tả thông tin, nhưng không vì thế mà C# kém phần mạnh
mẽ Chúng ta có thể tìm thấy rằng ngôn ngữ này có thể sử dụng đểlàm bất cứ nhiệm vụ nào
C# là ngôn ngữ hướng đối tượng
Mã nguồn của C# được viết trong Class (lớp) Những Class này chứa cácMethod ( phương thức) thành viên của nó
Class (lớp) và các Method (phương thức) thành viên của nó có thể được
sử dụng lại trong những ứng dụng hay chương trình khác
C# mang đến sức mạnh của C++ cùng với sự dễ dàng của ngôn ngữVisual Basic
2.1.2 Ưu nhược điểm của C# so với C/C++
C# được kế thừa những ưu điểm của C/C++, bỏ đi những dư thừa không cầnthiết gây khó khăn cho người sử dụng:
Câu lệnh C# đơn giản, ít từ khóa
Tính năng Debug rất thuận tiện
Ngôn ngữ C# được đánh giá là dễ học, kết hợp nhiều ưu điểm của cácngôn ngữ lập trình hướng đối tượng Java và C++ Do đó ngôn ngữ C#đang được ưa chuộng nhất
Ngôn ngữ C# là cơ sở để phát triển các ứng dụng Windows Form,ASP.NET, Wed Service…
Hỗ trợ nhiều thư viện hàm có sẵn giúp cho người lập trình lấy hàm dễdàng và thuận tiện
Trang 15Tuy nhiên, C# lại có nhược điểm là chỉ có thể chạy được trên nền Windows và.NET framework Vì vậy, nó hạn chế phạm vi các ứng dụng của C#.
2.1.3 Giới thiệu về thư viện xử lý ảnh Aforge và các hàm được sử dụng.
Aforge là một framework C#, được thiết kế dành cho những nhà phát triển vànghiên cứu về các lĩnh vực thuộc về hệ thống Thị giác máy tính ( ComputerVision), và trong các lĩnh vực Trí tuệ nhân tạo Cụ thể như xử lí hình ảnh, mạng nơtron, các thuật toán di truyền, robot…
Thị giác máy tính ( Computer Vision), đúng như tên gọi mà người ta gắn chochúng, giống như thị giác con người vậy Nếu như bằng cặp mắt của mình, conngười có thể thu nhận hình ảnh từ môi trường xung quanh, biết được màu sắc củavật, hình dáng của vật và vô số thông tin khác để có những phản ứng, hành độngtrong môi trường sống thì thị giác của máy tính cũng vậy, chỉ có điều cặp mắt củamáy tính giờ đây được thay bằng các thiết bị điện tử như camera, sẻo hồng ngoạichẳng hạn,… Bằng hệ thống cảm biến này, máy sẽ thu thập thế giới đa chiều vàlưu giữ những gì thu thập được dưới dạng ảnh số Những ảnh này sau đó được xử
lý, phân tích và trích chọn ra những thông tin cần thiết giúp máy hiểu được nóđang nhìn tháy gì và phải làm gì
Để phục vụ cho việc xử lý ảnh, thư viện Aforge đã đưa ra nhiều hàm cơ bảnnhằm đơn giản hóa các công việc xử lý phức tạp, giảm bớt độ lớn cũng như độphức tạp của hệ thống Đồng thời cũng mang lại sự thoải mái cho người lập trình,giúp họ thực hiện nhanh hơn trong môi trường thân thiện Sau đây sẽ là các hàm cơbản sẽ thực hiện trong chương trình
Hàm ResizeBilinear: Là hàm dùng để thay đổi kích cỡ của ảnh đầu vào Đốivới công việc xử lý ảnh, đồng bộ ảnh đầu vào là vô cùng quan trọng vì hệ thốngkhông chỉ tiếp nhận ảnh từ một nguồn duy nhất mà nó có thể thu thập nguồn dữliệu từ nhiều nguồn khác nhau, vì thế mà các kích cỡ cũng khác nhau Khi đưa vào
hệ thống, kích cỡ này phải thống nhất để hệ thống xử lý Do đó ffaya là bước đầutiên quan trọng đối với hệ thống xử lý ảnh
Hàm GrayScale: Là hàm dùng để chuyển một ảnh từ hệ màu RGB tành ảnhxám Tác dụng của việc làm xám ảnh đó chính là để đưa ảnh về dạng xám, dạng
mà mỗi điểm ảnh chỉ được biểu diễn bằng một tham số duy nhất, sau đó chúng ta
có thể đi vào các bước tiếp theo để nâng cao chất lượng ảnh
Trang 16Hàm ThresolDifferent: Là hàm có nhiệm vụ các định những điểm kahcs biệtgiữa 2 ảnh dựa vào một ngưỡng được thiết lập Đây là một việc vô cùng hữu íchtrong việc xác định chuyển động của vật thể hay việc tìm kiếm khu vực khác nhau.Hàm Opening: Hàm này có nhiệm vụ loại bỏ các đối tượng có kích thước nhỏ,không đáng kể và chỉ giữ lại các đối tượng có kích thước lớn Hàm này chỉ áp dụngtrên ảnh nhị phân.
Hàm Closing: Là hàm có nhiệm vụ khô phục, điền đầy vào các vật thể khôngliền khối lại với nhau, giúp ta không loại bỏ đi các vật thể có khả năng đang tìmkiếm Hàm cũng chỉ áp dụng cho ảnh nhị phân
Hàm Histogram Equalization: Là hàm cân bằng xám cho ảnh
2.2 Phần mềm lập trình và mô phỏng MATLAB
MATLAB là một môi trường tính toán số và lập trình, được thiết kế bởi công
ty MathWorks MATLAB cho phép tính toán số với ma trận, vẽ đồ thị hàm số haybiểu đồ thông tin, thực hiện thuật toán, tạo các giao diện người dùng và liên kết vớinhững chương trình máy tính viết trên nhiều ngôn ngữ lập trình khác MATLABgiúp đơn giản hóa việc giải quyết các bài toán tính toán kĩ thuật so với các ngôn ngữlập trình truyền thống như C, C++, và Fortran
Hình 2 1 Giao diện Matlab
MATLAB được sử dụng trong nhiều lĩnh vực, bao gồm xử lý tín hiệu và ảnh,truyền thông, thiết kế điều khiển tự động, đo lường kiểm tra, phân tích mô hình tài
Trang 17chính, hay tính toán sinh học Với hàng triệu kĩ sư và nhà khoa học làm việc
trong môi trường công nghiệp cũng như ở môi trường hàn lâm, MATLAB là ngôn ngữ của tính toán khoa học
MATLAB là một ngôn ngữ lập trình thực hành bậc cao được sử dụng đểgiải các bài toán về kỹ thuật Nó tích hợp được việc tính toán, thể hiện kết quả,cho phép lập trình, giao diện làm việc rất dễ dàng cho người sử dụng Dữ liệu cùngvới thư viện được lập trình sẵn cho phép người sử dụng có thể có được những ứngdụng sau đây:
Sử dụng các hàm có sẵn trong thư viện, các phép tính toán học thông thường
Cho phép lập trình tạo ra những ứng dụng mới
Cho phép mô phỏng các mô hình thực tế
Phân tích, khảo sát và hiển thị dữ liệu
Với phần mềm đồ hoạ cực mạnh
Cho phép phát triển, giao tiếp với một số phần mềm khác như C++, Fortran
2.3 Các tập lệnh cơ bản trong matlab
a) Công dụng :
Thông báo ngày giờ hiện tại
b) Cú pháp :
c = clockc) Giải thích:
Trang 18Để thông báo dễ độc ta dùng hàm fix.
c: chứa thông báo hệ điều hành của máy
m: số phần tử của ma trận lớn nhất mà máy có thể làm việc được vớimatlab
Trang 19cd: cho biết thư mục hiện hành.
diretory: đường dẫn đến thư mục muốn làm việc
cd chuyển đến thư mục cấp cao hơn 1 bậc
Trang 20clear: xóa tất cả các biến khỏi vùng làm việc.
clear name: xóa các biến hay hàm được chỉ ra trong name
clear functions: xóa tất cả các hàm trong bộ nhớ
clear variables: xóa tất cả các biến ra khỏi bộ nhớ
clear mex: xóa tất cả các tập tin mex ra khỏi bộ nhớ
clear: xóa tất cả các biến chung
clear all: xóa tất cả các biến, hàm, và các tập tin mex khỏi bộ nhớ Lệnhnày làm cho bộ nhớ trống hoàn toàn
filename : tên tập tin cần xóa
n: biến chứa đối tượng đồ họa cần xóa Nếu đối tượng là một cửa sổ thìcửa sổ sẽ bị đóng lại và bị xóa
Trang 21dir: liệt kê các tập tin và thư mục có trong thư mục hiện hành.
dir name: đường dẫn đến thư mục cần liệt kê
12 Lệnh DISP
a) Công dụng:
Trình bày nội dung của biến (x) ra màn hình
Trang 22>>num = ‘PHAM QUOC TRUONG’
num = PHAM QUOC TRUONG
Trang 23Định dạng kiểu hiển thị của các con số.
help: hiển thị vắn tắt các mục hướng dẫn
topic: tên lệnh cần được hướng dẫn
Trang 24load: nạp file matlab.mat
load filename: nạp filename.mat
Trang 25load filename.extension: nạp file filename.extension
Tập tin này phải là tập tin dạng ma trận có nghĩa là số cột của hàng dướiphải bằng số cột của hàng trên Kết quả ta được một ma trận có số cột vàhàng chính là số cột và hàng của tập tin văn bản trên
Lệnh pack giải phóng không gian bộ nhớ cần thiết bằng cách nén thôngtin trong vùng nhớ xuống cực tiểu Vì matlab quản lý bộ nhớ bằngphương pháp xếp chồng nên các đoạn chương trình Matlap có thể làmcho vùng nhớ bị phân mảnh Do đó sẽ có nhiều vùng nhớ còn trốngnhưng không đủ để chứa các biến lớn mới
Lệnh pack sẽ thực hiện :
+ Lưu tất cả các biến len đĩa trong một tập tin tạm thời là pack.tmp
Trang 26+ Xóa tất cả các biến và hàm có trong bộ nhớ.
+ Lấy lại các biến từ tập tin pack.tmp
+ Xóa tập tin tạm thời pack.tmp
Kết quả là trong vùng nhớ các biến được gộp lại hoặc nén lại tối đa nênkhông bị lãng phí bộ nhớ
Pack.finaname cho phép chọn tên tập tin tạm thời để chứa các biến Nếukhông chỉ ra tên tập tin tạm thời thì Matlab sẽ lấy tin tập tin đó làpack.tmp
Nếu đã dùng lệnh pack mà máy vẫn còn báo thiếu bộ nhớ thì bắt buộcphải xóa bớt các biến trong vùng nhớ đi
path: liệt kê tất cả các đường dẫn đang có
p: biến chứa đường dẫn
path (p): đặt đường dẫn mới
Trang 28filename: tên file cần hiển thị nội dung.
Lệnh này trình bày tập tin cần được chỉ ra
Trang 29who: liệt kê tất cả các tên biến đang tồn tại trong bộ nhớ.
Whos: liệt kê tên biến, kích thước, số phần tử và xét các phần ảo có khác
0 không
Who global và whos: lietj kê các biến trong vùng làm việc chung
2.4 Các phép toán đơn giản:
Giống như máy tính đơn giản thông thường, Matlab có thể thực hiện các phéptoán đơn giản như ví dụ dưới đây:
Trang 30Ví dụ: Mary đến một cửa hàng văn phòng phẩm và mua 4 cục tẩy, 25 xu mộtcục, 6 tập vở, 52 xu một tập, 2 cuộn băng dài, 99 xu một cuộn Hãy tính xem Marymua bao nhiêu vật và tổng số tiền là bao nhiêu?
Nếu dùng máy tính thông thường ta vào các số:
1 + 6+ 2 = 12 (vật)
2 x 25 + 6 x 52 + 2 x 99 = 610 (xu)Trong Matlab chúng ta có thể giải quyết vấn đề này theo nhiều cách Trướctiên giống như máy tính ở trên, chúng ta có thể tính:
>>4 + 6 + 12
Ans = 12
>>4*25 + 6*59 + 2*99
Ans = 610
Chú ý rằng Matlab không chú ý đến những khoảng trống, cho tất cẩ các phần,
và phép nhân có mức độ ưu tiên cao hơn phép cộng Và một chú ý khác là Matlabgọi kết quả ans (viết tắt của answer) cho cả hai phép tính
Như đã nói ở trên, vấn đề trên có thể giải quyết bằng cách chứa các thông tinvào biến của Matlab:
Trang 31cho máy tính giá trị gán nhưng không hiển thị ra màn hình Cuối cùng khác với gọikết quả ans, chúng ta yêu cầu Matlab gọi kết quả tổng số các vật là iterms, và tổng
số tiền là cost Tại mỗi bước Matlab đều đưa ra các thông tin Vì có lưu giữ các biếnnên chúng ta có thể yêu cầu Matlab tính giá trị trung bình cho mỗi vật:
>> everage_cost = cost/iterms
everage_cost = 50.8333
Bởi vì everage cost có 2 từ, mà Matlab yêu càu biến chỉ có một từ, nên chúng
ta dùng dấu gạch dưới để nối 2 từ này thành một từ
Ngoài các phép tính trên, Matlab còn có một số phép tính cơ bản khác nhưbảng dưới đây:
2.4.1 Không gian làm việc của Matlab:
Cũng như bạn làm việc với cửa sổ lệnh, Matlab nhớ các lệnh bạn gõ cũng nhưcác giá trị bạn gán cho nó hoặc nó được tạo nên Những lệnh và biến này được gọi
là lưu giữ trong không gian làm việc của Matlab, và có thể được gọi lai khi bạnmuốn Ví dụ, để kiểm tra giá trị của biến tape, tất cả những gì bạn phải làm là yêucầu Matlab cho biết bằng cách đánh lại ten biến tại dấu nhắc:
>>tape
tape = 2
Trang 32Nếu bạn không nhớ tên biến, bạn có thể yeu cầu Matlab cho danh sách cácbiến bằng cách đánh lệnh who từ dấu nhắc lệnh:
>> who
Your variables are:
ans cost iterms tape average_cost
2.4.2 Biến:
Giống như những ngôn ngữ lập trình khác, Matlab có những quy định riêng vềtên biến Trước tiên, tên biến phải là một từ, không chứa dấu cách, và tên biến phải
có những tuân thủ theo quy tắc sau:
Quy định về tên biến:
Tên biến có phân biệt chữ hoa chữ thường
Ví dụ: Iterms, iterms, itErms, và ITERMS là các biến khác nhau
Tên biến có thể chứ nhiều nhất 31 kí tự, còn các kí tự sau kí tự 3 bị lờ đi
Ví dụ: howaboutthisveriablename
Tên biến bắt đầu phải là chữ cái, tiếp có thể là chữ số, số gạch dưới
Ví dụ: how_about_this_veriable_name, X58694, a_b_c_d_e
Kí tự chấm câu không được phép dùng vì nó có ý nghĩa đặc biệt
Cùng với những quy định trên Malab có những biến đặc biệt trong bảngsau:
Trang 33ans Tên biến mặc định dùng để trả về kết quả
pi=3.1415
Eps Số nhỏ nhất, như vậy dùng cộng với 1 để được số
nhỏ nhất lớn hơn 1flops Số của phép toán số thực
inf Để chỉ số vô cùng như kết quả của 1/10
NaN hoặc nan Dùng để chỉ số không xác định như kết quả của 0/0
i (và) j i = j =
nargin Số các tối đa vào hàm được sử dụng
narout Số các đối số hàm đa ra
realmin Số nhỏ nhất có thể được của số thực
realmax Số lớn nhất có thể được của số thực
Bảng 2 3 Các biến và giá trị của các biến đặc biệt
Như bạn có thể tạo một biến của Matlab, và bạn cũng có thể gán lại giá trị chomột hoặc nhiều biến
Trang 34không tính lại iterms với giá trị mới của erases Khi Matlab thực hiện một phéptính, nó lấy giá trị của các biến hiện thời, nên nếu bạn muốn tính giá trị mới củaiterms, cost, average_cost, bạn gọi lại các lệnh tính các giá trị đó.
Đối với các biến đặc biệt ở trên, nó có sẵn giá trị, nư vậy khi bạn khởi độngMatlab; nếu bạn thay đổi giá trị của nó thì những giá trị đặc biệt ban đầu sẽ bị mấtcho đến khi bạn xóa biến đó đi hoặc khởi động lại Matlab Do đó bạn không nênthay đổi giá trị của biến đặc biệt, trừ hi nó thực sự cần thiết
Các biến trong không gian làm việc của Matlab có thể bị xóa không điều kiệnbằng cách dùng lệnh clear Ví dụ:
>>clear erases
Chỉ xóa một biến erases
>>clear cost iterms
Xóa cả 2 biến cost và iterms
2.4.3 Câu giải thích (comment) và dự chấm câu:
Tất cả những văn bản đằng sau kí hiệu phần trăm (%) đều là câu giải thích Vídụ:
>>erases = 4 % Số cục tẩy
erases = 4
Biến erases được gán giá trị là 4, còn tất cả kí hiệu phần trăm và văn bản đằngsau nó đều bị lờ đi Đặc điểm này giúp cho cho chúng ta dễ theo dõi công việcchúng ta đang làm
Nhiều lệnh có thể đặt trên cùng một hàng, chúng cách nhau bởi dấu phẩy hoặcdấu chấm phẩy như:
>>erases = 4, pads = 6; tape = 2
erases = 4
Trang 35Missing operator, coma, or semicolon.
Giống như vậy, trạng thái của lời giải thích không thể tiwwps tục :
>>% Comments cannot br continued…
>> either
???Undefined function or variable either
2.4.4 Số phức:
Một trong những đặc điểm mạnh mẽ nhất của Matlab à làm việc với số phức
Số phức trong Matlab được định nghĩa theo nhiều cách, ví dụ như sau:
>>c1 = 1 – 2i % chèn thêm kí tự vào I phần ảo
Trang 36Một số ngôn ngữ yêu cầu sự điều khiển đặc biệt cho số phức khi nó xuất hiện,trong Matlab thì không cần như vậy Tất cả các phép tính toán học để thao tác đượcnhư đối với số thực thông thường:
Trang 37ở trên số phức được biểu diễn bằng độ lớn M và góc, quan hệ giữa các đạilượng này và phần thực, phàn ảo của số phức biểu diễn dưới dạng đại số là:
2.5 Các hàm toán học thông thường:
Các hàm toán học của Matlab được liệt kê trong bảng dưới đây, chúng đều cóchung một cách gọi hàm như ví dụ dưới đây:
>> x = sqrt(2)/2
Trang 38Những lệnh này để tìm một góc ( tính bằng độ) khi biết giá trị hàm sin của nó
là /2 Tất cả các hàm liên quan đến góc của Matlab đều làm việc với radian
Bảng các hàm :
Các hàm thông thường:
abs(x) Tính argument của số phức x
acos(x) Hàm ngược của cosine
asin(x) Hàm ngược của sine
acosh(x) Hàm ngược của Hypebolic cosine
angle(x) Tính góc của số phức x
asinh(x) Hàm ngược của Hypebolsine
atan(x) Hàm ngược của tanget
atan2(x,y) Là hàm actanget phần thực của x và y
atanh(x) Là hàm ngược Hyperbolic của tanget
ceil(x) Xấp xỉ dương vô cùng
conj(x) Số phức liên hợp
cos(x) Hàm cosin của x
cosh(x) Hàm hyperbolic cuosine của x
exp(x) Hàm ex
fix(x) Xấp xỉ 0
floor(x) Xấp xỉ âm vô cùng
gdc(x,y) Ước số chung lớn nhất của hai số nguyên x,y
imag(x) Hàm trả về phần ảo cảu số phức
lcm(x,y) Bội số chung nhỏ nhất của 2 số x và y
Trang 39log(x) Logarithm tự nhiên
log10(x) Logarithm cơ số 10
tanh(x) Hyperbolic tanget
Bảng 2 4 Các hàm toán học thông thường
>>4*atan(1) %Một cách tính giá trị xấp xỉ của pi
Ans = 3.1416
>> help atant2 %Yêu cầu giúp đỡ đối với hàm atan2
ATAN2 four quadrant inverse tangent
ATAN2(Y, X) í the four quadrant arctanget of the real parts of the elements of
X and Y -pi <= ATAN2(Y, X) <= pi
See also ATAN
Trang 40Ví dụ: Ước lượng chiều cao của một ngôi nhà.
Vấn đề: Giả thiết biết khoảng cacash từ người quan sát đến ngôi nhà là D, góc
từ người quan sát đến ngôi nhà là: chiều cao của người quan sát là h Hỏi ngôi nhàcao bao nhiêu
Ngôi nhà có chiều cao H + h, H là chiều dài của một cạnh tam giác, chiều dàinày có thể tính được bằng công thức quan hệ giữa góc và cạnh tam giác