1.2 Các vấn đề cơ bản trong xử lý ảnh 1.2.1 Một số khái niệm Pixel Picture Element: Phần tử ảnh Ảnh trong thực tế là một ảnh liên tục về không gian và về giá trị độ sáng.. Mức xám Gr
Trang 1MỤC LỤC
MỤC LỤC 1
LỜI CẢM ƠN 5
LỜI CAM ĐOAN 6
LỜI NÓI ĐẦU 7
DANH MỤC HÌNH ẢNH 8
CHƯƠNG 1 9
TỔNG QUAN VỀ XỬ LÝ ẢNH 9
1.1 Tổng quan về xử lý ảnh 9
1.2 Các vấn đề cơ bản trong xử lý ảnh 10
1.2.1 Một số khái niệm 10
1.2.2 Thu nhận ảnh 10
1 2.3 Biểu diễn ảnh 11
1.2.4 Các lĩnh vực xử lý ảnh 12
1.2.4.1 Nâng cao chất lượng ảnh 12
1.2.4.2 Khôi phục ảnh 12
1.2.4.3 Phân tích ảnh 13
1.2.4.4 Nén ảnh 13
1.2.4.5 Tổng hợp ảnh 13
1.2.5 Một số hệ thống xử lý ảnh cơ bản 13
1.3 Một số phương pháp xử lý ảnh 14
1 3.1 Kỹ thuật tăng giảm độ sáng 14
1.3.2 Tăng giảm độ tương phản 16
Trang 21.3.3 Tách ngưỡng 18
1.3.4 Phép giãn ảnh đa cấp xám 18
1.3.4.1 Định nghĩa 18
1.3.4.2 Thuật toán 18
1.3.5 Các tác động ảnh xám cục bộ 20
1.3.5.1 Tác động nhân chập ảnh 20
1.3.5.2 Các phương pháp lọc-làm nhẵn 21
1.3.5.3 Bộ lọc phi tuyến 22
1.3.5.4 Lọc phi tuyến 23
1.3.6 Phép co ảnh đa cấp xám 24
1.3.6.1 Định nghĩa 24
1.3.6.2 Thuật toán 24
1.3.7 Các phép biến đổi hình học 24
1.3.7.1 Phép dịch ảnh 24
1.3.7.2 Phép phóng to hoặc thu nhỏ ảnh 25
1.3.7.3 Phép quay ảnh 25
1.3.7.4 Kết hợp các phép biến đổi hợp nhất 26
CHƯƠNG 2 TỔNG QUAN VỀ C SHARP 28
2.1 Tổng quan về ngôn ngữ C sharp (C #) 28
2.1.1 Giới thiệu chung về ngôn ngữ C sharp (C#) 28
2.1.2 Nền tảng ngôn ngữ C# 29
2.1.2.1 Kiểu dữ liệu 29
2.1.2.2 Biến, hằng và toán tử 31
2.1.2.3 Câu lệnh 32
Trang 32.1.3.1 Lớp 36
2.1.3.2 Thuộc tính truy cập 37
2.1.3.3 Tham số của phương thức 38
2 1.3.4 Đối tượng 38
2.1.3.5 Khởi tạo biến thành viên 38
2.1.4 Kế thừa và đa hình 39
2.1.4.1 Kế thừa 39
2.1.4.2 Đa hình 39
2.1.4.3 Lớp trừu tượng 39
2.1.5 Nạp chồng toán tử 40
2.1.6 Các lớp cơ sở NET 41
2.1.6.1 Lớp đối tượng trong NET Framework 41
2.1.6.2 Lớp Timer 42
2.1.6.3 Lớp về thư mục & hệ thống 42
2.1.6.4 Lớp Math 43
2.1.6.5 Lớp thao tác tập tin 44
2.1.6.6 Làm việc với tập tin dữ liệu 44
2.1.7 Ứng dụng Window với Window Form 45
2.1.8Truy cập dữ liệu với ADO.NET 45
CHƯƠNG 3 ỨNG DỤNG XỬ LÝ ẢNH TRONG ĐIỀU KHIỂN 47
ROBOT TỰ ĐỘNG 47
3.1 Hoạt động của robot 48
3.1.1 Nhiệm vụ 48
3.1.2 Hướng của giá đỡ hàng so với xe nâng tự động 49
3.1.3 Khoảng cách từ xe tự động đến giá đỡ hàng 50
Trang 43.1.4 Xác định khoảng cách 50
3.1.5 Kích thước ảnh thực của đối tượng 52
3.2 Ứng dụng xử lý ảnh để tính khoảng cách 54
3.2.1 Mô tả bài toán 54
3.2.2 Quá trình thu ảnh và các yêu cầu của hệ thống 55
3.2.2.1 Đọc ảnh 55
3.2.2.2 Lọc nhiễu 55
3.2.2.3 Phân ngưỡng 56
3.3 Tính toán khoảng cách dựa trên ảnh thu được 59
3.4 Xây dựng chương trình 60
3.4.1Môi trường ứng dụng 60
3.4.2 Chương trình 61
3.4.2.1 Kết quả thực nghiệm 61
KẾT LUẬN 64
1 Đánh giá kết quả 64
2 Hướng phát triển 64
TÀI LIỆU THAM KHẢO 65
Trang 5LỜI CẢM ƠN
Lời đầu tiên cho em gửi lời cảm ơn chân thành nhất tới tất cả các thầy, côgiáo Trường Đại học Công nghệ Thông tin & Truyền thông - Đại học TháiNguyên nói chung và các thầy cô giáo trong Bộ môn Các Hệ thống Thông tin nóiriêng Các thày, cô đ-ã tận tình giảng dạy, trang bị cho em vốn kiến thức cũngnhư những kinh nghiệm quý báu để em có thể đạt được kết quả tốt nhất tronghọc tập cũng như trong công việc của em sau này Đặc biệt em xin chân thànhcảm ơn thầy giáo Tiến sỹ Phạm Đức Long đã trực tiếp hướng dẫn giúp đỡ emtrong thời gian làm đồ án vừa qua Trong thời gian hướng dẫn tuy thầy rất bậnnhưng thầy vẫn dành thời gian chỉ bảo truyền đạt cho em những kinh nghiêm vànhững định hướng cho đồ án của em đảm bảo kết quả, và hoàn thành đúng thờigian theo quy định Cuối cùng em xin cảm ơn sự giúp đỡ, động viên của giađình, bạn bè dành cho em trong suốt thời gian qua
Thái nguyên, tháng 06 năm 2012
Sinh viên
Nguyễn Thị Thu Hoàn
Trang 6LỜI CAM ĐOAN
Đồ án tốt nghiệp là sản phẩm tổng hợp toàn bộ các kiến thức mà sinh viên
đã học được trong suốt thời gian học tập tại trường đại học Ý thức được điều đó,với tinh thần nghiêm túc, tự giác cùng sự lao động miệt mài của bản thân và sựhướng dẫn tận tình của thầy giáo Tiến sỹ Phạm Đức Long em đã hoàn thành đồ
án tốt nghiệp của mình
Em xin cam đoan: nội dung đồ án của em không sao chép nội dung cơ bản từ các
đồ án khác và sản phẩm của đồ án là của chính bản thân em nghiên cứu xây dựnglên Mọi thông tin sai lệch em xin hoàn toàn chịu trách nhiệm trước hội đồng bảovệ
Sinh viên Nguyễn Thị Thu Hoàn
Trang 7LỜI NÓI ĐẦU
Ngày nay công nghệ thông tin ngày càng không thể thiếu với đời sống củacon người với tốc độ phát triển vũ bão của công nghệ thông tin làm cho việc luânchuyển thông tin trở nên cực kỳ nhanh chóng và vai trò của thông tin ngày càngtrở nên quan trọng Cùng với sự phát triển chung của thế giới và khu vực trongnhững năm gần đây ngành tin học Việt Nam cũng có những bước phát triển vượtbậc
Trong thời đại mới việc đẩy mạnh ứng dụng công nghệ thông tin vào thựctiễn là một mục tiêu được Nhà nước quan tâm và phát triển Việc nắm bắt, khaithác, xử lý thông tin càng nhanh, càng linh hoạt, càng chính xác bao nhiêu thì kếtquả thành công càng cao
Với mong muốn tìm hiểu,tiếp cận với công nghệ thông tin trong thời đại mới
để có thêm kiến thức cho con đường lập nghiệp trong tương lai, em đã chọn đề
tài: Ứng dụng xử lý ảnh trong điều khiển robot tự động.
Mục tiêu của đề tài cần giải quyết vấn đề sau:
Xây dựng chương trình cho camera đặt trên một robot tự động xác định hướng vàkhoảng cách tới một đối tượng để cung cấp thông tin cho máy tính điều khiểnrobot
Trên cơ sở đó, nội dung của đề tài gồm 3 chương sau:
Chương 1 : Tổng quan về xử lý ảnh
Chương 2 : Tổng quan về C sharp
Chương 3: Ứng dụng xử lý ảnh để điều khiển robot tự động
Mặc dù đã cố gắng nhưng chắc chắn đồ án của em không tránh khỏi nhữngthiếu sót và hạn chế Em rất mong nhận được sự đóng góp ý kiến của cácthầy(cô) giáo để đề tài của em hoàn thiện hơn
Em xin chân thành cảm ơn!
Trang 8DANH MỤC HÌNH ẢNH
Hình 1: Các bước cơ bản của hệ thống xử lý ảnh 9
Hình 2: Biểu diễn của một mức xám của ảnh số 11
Hình 3: Hệ tọa độ màu RGB 12
Hình 4: Ảnh gốc (a); ảnh đã giảm độ sáng (b); ảnh đã được tăng cường độ sáng (c) 16
Hình 5: (a) Ảnh gốc; (b) Ảnh đã giảm độ tương phản; (c) Ảnh đã tăng độ tương phản 17
Hình 6: (a):ảnh xám (b):ảnh đen trắng 18
Hình 7: Kiến trúc ADO.NET 46
Hình 8: Xe nâng hàng có người lái 48
Hình 9:Giá đỡ hàng tiêu chuẩn và các kích thước (dài x rộng x cao) mm Từ trên xuống dưới, từ trái qua phải: 2a): châu Âu (1200 x 800 x 144) 2b): Mỹ 2c): Hàn Quốc (1100 x 1100 x 150) 2d): Trung Quốc (1100 x 1100 x 150) 49
Hình 10: Các hệ tọa độ 50
Hình 11: Mô hình xác định khoảng cách sử dụng camera với hai mặt phẳng ảnh và mặt phẳng đối tượng song song với nhau 51
Hình 12: Mô hình camera pinhole khi mặt phẳng ảnh không song song mặt phẳng đối tượng 52
Hình 13:Ảnh gốc và ảnh sau khi thực hiện phân ngưỡng 58
Hình 14: Mô hình chương trình xử lý 58
Hình 15: Giao diện chương trình 61
Hình 16: Giao diện thực hiện chính 62
Trang 9CHƯƠNG 1 TỔNG QUAN VỀ XỬ LÝ ẢNH
1.1 Tổng quan về xử lý ảnh
Xử lý ảnh là một lĩnh vực đang được quan tâm, xử lý ảnh có quan hệ mậtthiết với nhận thức về ảnh của con người Tổng quát với hệ thống xử lý ảnh nhưsau:
Hình 1: Các bước cơ bản của hệ thống xử lý ảnh
Theo sơ đồ trên, ảnh cần được xử lý sẽ thu qua hệ thống thu nhận ảnh Hệ thốngthu ảnh này bao gồm các thiết bị chụp ảnh như camera, máy quét, máy scanner,máy chụp hình, TiVi camera…
Ảnh sau khi thu nhận qua hệ thống thu nhận ảnh sẽ tiền xử lý, trích chọn đặctrưng, hậu xử lý,sau đó ảnh đượclưu thành file để đưa vào máy tính xử lý, lưu
Trang 10trữ, hoạc được đem ra đối sánh để đưa ra kết luận Một số hệ thống có thể baogồm các chức năng lấy mẫu và số hóa ảnh.
Có nhiều loại file ảnh khác nhau: file bitmap, file jpeg, file gif, Ảnh gốc saukhi đã số hóa được đưa vào máy tính để xử lý Và tùy theo từng ứng dụng cụ thể
mà chọn ra các cách xử lý thích hợp
1.2 Các vấn đề cơ bản trong xử lý ảnh
1.2.1 Một số khái niệm
Pixel (Picture Element): Phần tử ảnh
Ảnh trong thực tế là một ảnh liên tục về không gian và về giá trị độ sáng
Để có thể xử lý ảnh bằng máy tính cần thiết phải tiến hành số hóa ảnh Trong quátrình số hóa người ta biến đổi tín hiệu liên tục sang tín hiệu rời rạc thông qua quátrình lấy mẫu (rời rạc hóa về không gian) và lượng tử hóa thành phần giá trị (rờirạc hóa biên độ giá trị), về nguyên tắc bằng mắt thường không phâ biệt được haimức kề nhau Do vậy người ta sử dụng khái niệm Pixel- phần tử ảnh Mỗi pixelgồm một cặp tọa độ x,y và màu Cặp tọa độ x,y tạo nên độ phân giải (resolution)
Ảnh: Là một tập hợp các điểm ảnh Khi được số hóa, nó thường được biểu diễnbởi mảng hai chiều l (n,p): n là số dòng, p là số cột ta nói ảnh gồm n*p pixel Ta
ký hiệu l (x,y) để chỉ một điểm ảnh
Mức xám (Gray level): Là kết quả của sự mã hóa tương ứng một cường độ sángcủa mỗi điểm ảnh với một giá trị số - kết quả của quá trình lượng tử hóa
Lược đồ mức xám (Histogram): Là mộ hàm cung cấp tần suất xuất hiện của mỗimức xám Lược đồ mức xám được biểu diễn bởi hệ tọa độ vuông góc x,y Trong
hệ tọa độ này, trục hoành biểu diễn số mức xám từ 0 đến N, N là số mức xám (Sốđiểm ảnh có cùng mức xám)
1.2.2 Thu nhận ảnh
Muốn xử lý ảnh trên máy tính ta cần phải số hóa ảnh, tức là đưa ảnh từthực tế vào máy tính Ta dùng các thiết bị thu nhận như: Camera cộng với bộ
Trang 111 2.3 Biểu diễn ảnh
Ảnh có thể biểu diễn dưới dạng tương tự hoặc tín hiệu số Trong biểu diễn sốcủa các ảnh đa mức xám, một ảnh được biểu diễn dưới dạng một ma trận haichiều Mỗi phần tử của ma trận biểu diễn cho mức xám, hay cường độ sáng của
ảnh tại vị trí đó Mỗi phần tử trong ma trận được gọi là phần tử ảnh, thông
thường ký hiệu là PEL (Picture Element) hoặc là điểm ảnh (Pixel)
Với ảnh đen trắng: Nếu dùng 8 bit (1 byte) để biểu diễn mức xám thì số các mứcxám có thể biểu diễn được là 28 hay 256 Mỗi mức xám được biểu diễn dưới dạng
là một số nguyên nằm trong khoảng từ 0 đến 255, với mức xám 0 biểu diễn chomức cường độ sáng nhất và 255 biểu diễn cho mức cường độ đen nhất
Với ảnh màu: Cách biểu diễn cũng tương tự như đối với ảnh đen tráng, chỉ khác
là các số tại mỗi phần tử của ma trận biểu diễn cho ba màu riêng rẽ gồm : Đỏ(red), lục (green), lam (blue) Để biểu diễn cho một điểm ảnh màu cần 24bit, 24bit này được chia thành ba khoảng 8bit Mỗi khoảng này biểu diễn cho cường độsáng của một trong các màu chính Để hiểu được việc số hóa ảnh ta xem hình4.Trong đó độ sáng trung bình của mỗi hình chữ nhật bằng giá trị một điểm ảnh
Hình 2: Biểu diễn của một mức xám của ảnh số
Sau quá trình số hóa ta sẽ thu được một ma trận tương ứng với ảnh cầnxét, mỗi phần tử của ma trận tương úng với một điểm ảnh Các điểm này thườngđược đặc trưng bởi tọa độ màu RGB tương ứng với nó trong hệ tọa độ màu cơbản sau:
Trang 12Hình 3: Hệ tọa độ màu RGB
Về mặt toán học ta có thể xem ảnh như là một hàm hai biền(x,y), với x,y
là các biến tọa độ Giá trị số tại điểm (x,y) tương ứng với giá trị xám hoặc độsáng của ảnh
1.2.4 Các lĩnh vực xử lý ảnh
1.2.4.1 Nâng cao chất lượng ảnh
Nâng cao chất lượng ảnh là quá trình xử lý ảnh để nâng cao chất lượng củaảnh Nó làm nổi bật một số đặc tính nào đó của ảnh nhằm phục vụ cho hiển thịhoặc các quá trình phân tích tiếp theo Tùy theo các ứng dụng khác nhau màchúng ta có các kỹ thuật nâng cao chất lượng ảnh khác nhau Nâng cao chấtlượng ảnh có quan hệ gần gũi với khôi phục ảnh Khi một ảnh bị nhiễu, thì khôiphục ảnh gốc thường đưa đến nâng cao chất lượng ảnh Có một số khác biệt giữakhôi phục và nâng cao chất lượng ảnh Trong khôi phục ảnh, một ảnh gốc bịnhiễu, và mục tiêu là làm cho ảnh sau khi xử lý càng giống ảnh gốc càng tốt Cònnâng cao chất lượng ảnh thì mục tiêu là làm cho ảnh sau khi xử lý được tốt hơnkhi chưa xử lý Như vậy một ảnh không bị nhiễu thì không thể được xử lý bằngcác kỹ thuật khôi phục ảnh nhưng ảnh đó có thể được xử lý bằng các kỹ thuậtnâng cao chất lượng ảnh Nhưng một ảnh bị nhiễu thì nó có thể được xử lý vừabằng các kỹ thuật khôi phục ảnh và nâng cao chất lượng ảnh
1.2.4.2 Khôi phục ảnh
Bất kỳ ảnh nào được thu bằng các thiệt bị điện, hay quang điện, hayquang học thường bị nhiễu bởi các môi trường cảm biến của các thiệt bị đó Các
Trang 13ngẫu nhiên do chuyển động giữa camera và các đối tượng được chụp, nhiễu dokhí quyển.
Khôi phục ảnh dùng các bộ lọc để lọc các ảnh bị nhiễu để giảm tối thiểu
sự ảnh hưởng của các loại nhiễu này cho ra ảnh kết quả càng gần giống với ảnhgốc càng tốt Hiệu quả của các bộ lọc khôi phục ảnh phụ thuộc vào sự nhận biết
về quá trình nhiễu cùng với quá trình thu nhận ảnh Khôi phục ảnh thường được
xử lý trên miền tần số là chủ yếu Bao gồm các kỹ thuật lọc ngược, lọc bìnhthường tối thiểu
1.2.4.3 Phân tích ảnh
Là quá trình suy luận, tính toán dựa vào các đặc tính thể hiện trên hìnhảnh để từ đó rút ra được các thông tin định lượng về ảnh Phân tích ảnh có thểtách biên các vật thể trên ảnh, đo lường, phân loại, mô tả, so sánh chúng Mặtkhác, từ việc phân tích ảnh cũng có thể suy ra các số liệu thống kê về hình ảnh
Phân đoạn ảnh(Segmentation) là một hướng riêng của phân tích ảnh Phânđoạn ảnh bao gồm các kỹ thuật phân tách các đối tượng của ảnh thành những đốitượng có những nét đặc trưng của nó oặc tách biệt hoàn toàn giữa đối tượng vànền Mục đích là để cho dễ quan sát và xử lý
1.2.5 Một số hệ thống xử lý ảnh cơ bản
Một hệ thống xử lý ảnh cơ bản có thể bao gồm: Máy tính cá nhân kèmtheo vi mạch chuyển đổi đồ họa VGA hoặc SVGA, đĩa chứa các ảnh mà bạndùng để kiểm tra các thuật toán và một màn hình có hỗ trợ VGA hoặc SVGA
Trang 141.3 Một số phương pháp xử lý ảnh
1 3.1 Kỹ thuật tăng giảm độ sáng
Tăng cường độ sáng (Brightness) của một ảnh có thể được hiểu như sựphát sáng toàn bộ ảnh Hay nói một cách cụ thể đó là sự phát sáng toàn bộ củamọi Pixel trong ảnh đó
Đây là một kỹ thuật khá đơn giản: để tăng thêm độ sáng, tất cả các Pixel củaảnh cần được cộng thêm giá trị điều chỉnh vào mọi kênh màu RGB Tuy kỹ thuậtnày đơn giản nhưng nó đem lại hiệu quả khá cao và rất hay được sử dụng tronglĩnh vực xử lý ảnh Nó giúp ích rất nhiều trong các ngành như y học, địa lý, quânsự, trong việc phân tích và nhận dạng
Ở đây điều chỉnh Brightness không chỉ được sử dụng để làm sáng lên nhữngảnh tối mà còn được sử dụng để làm tối đi các ảnh sáng Một ảnh sáng hoàn toànđơn giản là tất cả các Pixel đều màu trắng trong khi một ảnh tối tất cả các Pixelđều màu tối Sự khác nhau duy nhất trong làm tối một ảnh là trừ đi giá trị điềuchỉnh vào mỗi kênh màu R - G - B của ảnh
Đối với mỗi kênh màu, chúng chỉ nhận các giá trị [0 255] Chính vì thế khităng cường hay giảm độ sáng của một ảnh ta phải chú ý đến ngưỡng của cáckênh Điều đó có nghĩa là với mỗi kênh màu của một Pixel nếu nhỏ hơn 0 thì taphải gán bằng 0 và nếu lớn hơn 255 thì ta phải gán bằng 255
Biểu thức cho kỹ thuật Brightness có dạng:
g(x,y) = f(x,y) + b Trong đó b là hằng số cộng thêm vào giá trị màu f(x,y) Độ sáng của ảnh tăng nếu b > 0, và giảm bớt nếu b < 0.
Thuật toán chung được miêu tả bằng :
If (Brightness = True) Then // Tăng độ sáng
NewValue = OldValue + Adjustment;
Trang 15Else NewValue = OldValue - Adjustment; // Giảm độ sáng
If (NewValue < ValueMin) Then NewValue = ValueMin;
If (NewValue > ValueMax) Then NewValue = ValueMax;
Để cho thuật giả này nhanh hơn, chúng ta phân ra hai mức làm sáng(Lightening) và làm tối (Darkening) Việc phân ra làm hai mức là có hai lý do.Thứ nhất là khi làm sáng ảnh thì không phải kiểm tra nếu giá trị màu dưới 0 vàkhi làm tối ảnh cũng không phải kiểm tra nếu giá trị màu trên 255 Lý do thứ haiquan trọng hơn Đó là một Byte chỉ giữ những giá trị giữa 0 và 255 Mà phạm viđiều chỉnh màu lại nằm trong [-255 255] Điều đó có nghĩa là nếu chúng takhông phân ra làm hai mức thì giá trị điều chỉnh màu phải là Int và khi đó việc
xử lý tốn thêm thời gian sau mỗi vòng lặp
Thuật toán trên có thể được cải tiến như sau:
If (Brightness = True) Then
NewValue = OldValue + Adjustment;
If (NewValue > 255) Then NewValue = 255;
Else // Brightness=False
NewValue = OldValue - Adjustment;
If (NewValue < 0) Then NewValue = 0;
Với biến điều chỉnh màu Adjustment được khai báo kiểu Byte
Trang 16đã tối đen trong ảnh gốc cũng không được làm tối hơn.
1.3.2 Tăng giảm độ tương phản
Độ tương phản (Contrast) thể hiện sự thay đổi cường độ sáng của đốitượng so với nền, hay nói cách khác, độ tương phản là độ nổi của điểm ảnh hayvùng ảnh so với nền
Ảnh số là tập hợp các điểm, mà mỗi điểm có giá trị độ sáng khác nhau Ở đây,
độ sáng để mắt người dễ cảm nhận ảnh song không phải là quyết định Thực tếchỉ ra rằng hai đối tượng có cùng độ sáng nhưng đặt trên hai nền khác nhau sẽcho cảm nhận khác nhau Vì vậy ta có thể thay đổi độ tương phản của ảnh saocho phù hợp
Việc làm tăng độ tương phản rất hữu ích khi tiến hành xử lý trước theophương pháp phân ngưỡng Bằng việc làm tăng độ tương phản, sự khác nhau củagiá trị nền và đối tượng, độ dốc của cạnh đối tượng được tăng lên Do đó sau khilàm tăng độ tương phản ta có thể tìm các giá trị màu thích hợp với một vùng sánghơn
Trong một ảnh có độ tương phản cao, có thể xác định được các viền rõ ràng vàchi tiết khác nhau của ảnh đó được nổi bật Còn trong một ảnh có độ tương phảnthấp, tất cả các màu đều gần như nhau gây khó khăn cho việc xác định các chitiết của ảnh
Trang 17Hình sau mô tả việc tăng và giảm độ tương phản đối với ảnh gốc
(a) (b) (c)
Hình 5: (a) Ảnh gốc; (b) Ảnh đã giảm độ tương phản; (c) Ảnh đã tăng độ tương
Thuật toán được miêu tả như sau :
NewValue=OldValue/255; // Biến đổi đến một phần trăm
NewValue=NewValue - 0.5;
NewValue=NewValue*ContrastValue; //ContrastValue thuộc [-1,1]NewValue=NewValue + 0.5;
NewValue=NewValue*255;
If (NewValue > 255) Then NewValue = 255;
If (NewValue < 0) Then NewValue = 0;
Biểu thức Brightness và Contrast có thể được kết hợp lại để có được biểuthức sau:
Từ biểu thức (*) có thể điều chỉnh cả giá trị Brightness và Contrast
Trang 181.3.3 Tách ngưỡng
Ta chọn hai mức Thấp - Min, Cao - Max và giá trị ngưỡng λ, khi đó giá trịcác pixel được định nghĩa lại như sau:
+ Inew(x, y) = Max nếu I(x, y) >= λ
+ Inew(x, y) = Min nếu I(x, y) < λ
Ví dụ ảnh phân ngưỡng theo 2 mức giá trị màu 0 và 255:
+ I(x, y) = 0 với x= -(H-1) -1 hoặc M M+H-2; y = -(K-1) -1 hoặc N N+K-2
+ R(x, y) = Max {I(x-i, y-j)+T(i,j)} với i = 0 H-1; j = 0 K-1; x=0 M+H-1;y=0 N+K-1
1.3.4.2 Thuật toán
Trang 19B2: Quay mẫu T đi 180o được T’
B3: Dịch chuyển mẫu T’ trên ảnh I theo trật tự từ trên xuống dưới, từ trái sang
phải sao cho pham vi mẫu của T’ nằm trong ảnh I Ở mỗi lần dịch chuyển, pixelảnh kết quả tương ứng có mức xám bằng giá trị lớn nhất của tổng các cặp pixelcủa mẫu T’ và ảnh I tương ứng Kết quả thu được có thể giảm đi cùng một giá trịxám thích hợp
Trang 20: C là ma trận mặt nạ để thực hiện phép nhân chập C thường cókích thước (2k+1)x(2k+1).
Trang 21+ Kế tiếp các ảnh một cách tuần hoàn và tạo ra một tín hiệu tuầnhoàn.
+ Giảm các tín hiệu nhiễu
1.3.5.2 Các phương pháp lọc-làm nhẵn
Trong nhiều lĩnh vực kỹ thuật, nhiễu đóng vai trò chủ yếu gây nên nhữngkhó khăn khi ta cần phân tích một tín hiệu nào đó, cũng không loại trừ tín hiệuảnh Giữa một ảnh thực và ảnh số hoá thu nhận được khác nhau khá nhiều vì cónhiều quá trình can thiệp vào Nguyên nhân là do nhiễu điện tử của máy thu haychất lượng kém của bộ số hoá Ta xem xét biến nhiễu thể hiện trên ảnh thế nào.Giả sử ảnh là một miền có mức xám đồng nhất, như vậy các phần tử của ma trậnbiểu diễn ảnh sau quá trình số hoá phải có cùng giá trị Nhưng thực tế quan sát tathấy: gần giá trị trung bình của mức xám có những phần tử trội lên khá nhiều Đóchính là hiện tượng nhiễu Như vậy nhiễu trong ảnh số được xem như sự dịchchuyển nhanh của tín hiệu thu nhận (tín hiệu ảnh I[m,n]) trên một khoảng cáchngắn) Xem xét một cách tương đương trong không gian tần số, nhiễu ứng vớicác thành phần tần số cao trong ảnh Do vậy, người ta nghĩ đến việc biến đổi cótính đến ảnh hưởng của các phần tử lân cận bằng cách lấy “tổ hợp” các điểm lâncận này (trong không gian thực) hay lọc các thành phần tần số cao (trong không
gian tần số) Đây chính là kỹ thuật lọc (filtering) Cơ sở lý thuyết của kỹ thuật lọc
số là dựa trên tính dư thừa thông tin không gian: các pixel lân cận có thể có cùnghoặc gần cùng một số đặc tính Hơn nữa, nhiễu có thể coi như sự đột biến củamột điểm ảnh so với các điểm lân cận
Trong kỹ thuật này, người ta sử dụng một mặt nạ và di chuyển khắp ảnhgốc Tuỳ theo cách tổ hợp điểm đang xét với các điểm lân cận mà ta có kỹ thuậtlọc tuyến tính hay phi tuyến Điểm ảnh chịu tác động của biến đổi là điểm ở tâmmặt nạ
1.3.5.3 Bộ lọc phi tuyến
Trong kỹ thuật lọc tuyến tính, ảnh thu được sẽ là tổng trọng số hay làtrung bình trọng số các điểm lân cận với nhân cuộn hay mặt nạ Vì có nhiều loại
Trang 22nhiễu can thiệp vào quá trình xử lý ảnh nên cần có nhiều bộ lọc thích hợp Đểlàm trơn nhiễu ta sử dụng các mặt nạ thông thấp VD:
C vùng lâncận 9 điểmcân bằng
D Bộ lọcGauss cho 9điểm
Lọc tuyến tính ngoài làm trơn nhiễu còn có thể trích chọn biên (nổi biên) Dễdàng nhận thấy rằng biên là điểm có độ biến thiên nhanh về giá trị mức xám.Theo quan điểm về tần số tín hiệu, các điểm biên ứng với các thành phần tần sốcao Do vậy, ta có thể dùng bộ lọc thông cao để cải thiện: lọc các thành phần tần
số thấp và chỉ giữ lại thành phần tần số cao Vì thế, lọc thông cao thường đượcdùng làm trơn biên trước khi tiến hành các thao tác với biên ảnh Dưới đây là một
số mặt nạ dùng trong lọc thông cao:
Trang 23giá trị mức xám (các giá trị điểm ảnh vẫn giữ được giá trị của nó một cách gầnđúng không thay đổi quá nhiều với giá trị thực).
1.3.5.4 Lọc phi tuyến
Khác với lọc tuyến tính, kỹ thuật lọc phi tuyến coi một điểm ảnh kếtquả không phải là tổ hợp tuyến tính của các điểm lân cận Người ta thường sửdụng 3 bộ lọc đó là: trung vị, giả trung vị và lọc ngoài
a) Lọc trung vị
Điểm ảnh đầu vào sẽ được thay thế bằng trung vị các điểm ảnh Kỹ thuật nàyđòi hỏi giá trị các điểm ảnh phải được sắp theo thứ tự tăng hay giảm dần Kíchthước của sổ cũng được chọn (2k+1)x(2k+1) Lọc trung vị có tác dụng sau: + Hữu ích cho việc loại bỏ các điểm ảnh hay các hàng mà vẫn bảo toàn độphân giải
+ Hiệu quả giảm các điểm nhiễu trong cửa sổ lớn hơn hoặc bằng một nửa sốđiểm trong cửa sổ
Trang 241.3.6 Phép co ảnh đa cấp xám
1.3.6.1 Định nghĩa
Với ảnh đa cấp xám IMxN, THxK là mẫu Gọi R là ảnh kết quả của của phép
co ảnh I bởi mẫu T Khi đó R có kích thước (M+1-H, N+1-K) và được xác địnhnhư sau:
+ R(x, y) = Min {I(x+i, y+j)-T(i,j)} với i = 0 H-1; j = 0 K-1; x=0 M+1-H;y=0 N+1-K
1.3.6.2 Thuật toán
B1: Dịch chuyển mẫu T trên ảnh I theo trật tự từ trên xuống dưới và từ trái
sang phải sao cho mẫu T nằm trong ảnh I Ở mỗi lần dịch chuyển, pixel ảnh kếtquả tương ứng có mức xám bằng giá trị nhỏ nhất của hiệu cặp giá trị pixel ảnh I
Là sự tịnh tiến gốc tọa độ, trong đó các trục của tọa độ sau phép biến đổi
sẽ di chuyển theo cùng hướng, việc phân chia thang trên tọa độ là không đổi Gốctọa độ cũ (-tx, -ty) thì tọa độ (x’, y’) được tính như sau:
x’ = x +tx
y’ = y +ty
Phép biến đổi có thể được mô tả dưới định thức sau:
Trang 25T =
1.3.7.2 Phép phóng to hoặc thu nhỏ ảnh
Còn được gọi là sự chia lại thang tọa độ Khi chia thang tọa độ gốc vàhướng được giữ nguyên, chia thang tiến hành với hệ số chia thang Sx, Sy và cáctọa độ mới được tính toán theo công thức:
Ngay từ khi xuất hiện, hiệu ứng quay ảnh đã gây ấn tượng lớn và thu hút
sự quan tâm của những người yêu thích xử lý ảnh Thực ra đây là phương phápchuyển đổi các Pixel trong ảnh Do không làm thay đổi giá trị màu trong ảnh nên
có thể thực hiện phương pháp này trên ảnh màu cũng như trên ảnh xám Một ảnhđược xem như là một mảng hai chiều, chuyển đổi lại vị trí các Pixel là sắp xếp lạimảng này Khi quay thì sự chia thang giữ nguyên chỉ có hướng trục thay đổi Còntrục mới xuất hiện bằng cách quay trục cũ đi một góc θ ngược chiều kim đồng
hồ, khi đó tọa độ mới được theo theo công thức
Trang 26T1 = ¿ T2 = ¿
Trang 27Tkh = (Sx 1∗Sx 20 Sy 1∗Sy 2 00 0
Vậy kết hợp hai phép tỉ lệ là một phép tỉ lệ Dễ dàng mở rộng cho kết quả:kết hợp của nhiều phép tỉ lệ cũng là một phép tỉ lệ
Kết hợp các phép quay quanh gốc tọa độ:
T1 = (−cosθ 1 sinθ 1 cosθ 1 0 sin θ1 0
Trang 28CHƯƠNG 2 TỔNG QUAN VỀ C SHARP
2.1 Tổng quan về ngôn ngữ C sharp (C #)
2.1.1 Giới thiệu chung về ngôn ngữ C sharp (C#)
Ngôn ngữ C# khá đơn giản, chỉ khoảng 80 từ khóa và hơn mười mấy kiểu dữliệu được xây dựng sẵn Tuy nhiên, ngôn ngữ C# có ý nghĩa cao khi nó thực thinhững khái niệm lập trình hiện đại C# bao gồm tất cả những hỗ trợ cho cấu trúc,thành phần component, lập trình hướng đối tượng Những tính chất đó hiện diệntrong một ngôn ngữ lập trình hiện đại Và ngôn ngữ C# hội đủ những điều kiệnnhư vậy, hơn nữa nó được xây dựng trên nền tảng của hai ngôn ngữ mạnh nhất làC++ và Java
C# là một trình biên dịch hướng NET, tất cả các mã của C# luôn luôn chạytrên trên môi trường .NET Framework C# được thiết kế dùng riêng choMicrosoft’s NET Framework (một nền khá mạnh cho sự phát triển, triển khai,thực hiện và phân phối các ứng dụng) Nó có thể sinh ra mã đích trong môitrường NET Nó cũng là một ngôn ngữ hoàn toàn hướng đối tượng được thiết kếdựa trên kinh nghiệm của các ngôn ngữ khác
Trọng tâm của ngôn ngữ hướng đối tượng là lớp Lớp định nghĩa kiểu dữ liệumới, cho phép mở rộng ngôn ngữ theo hướng cần giải quyết C# có những từkhóa dành cho việc khai báo lớp, phương thức, thuộc tính mới C# hỗ trợ đầy đủkhái niệm trụ cột trong lập trình hướng đối tượng: đóng gói, thừa kế, đa hình
C# cũng hỗ trợ giao diện interface, nó được xem như một cam kết với một
lớp cho những dịch vụ mà giao diện quy định Trong ngôn ngữ C#, một lớp chỉ
có thể kế thừa từ duy nhất một lớp cha, tức là không cho đa kế thừa như trongngôn ngữ C++, tuy nhiên một lớp có thể thực thi nhiều giao diện Khi một lớpthực thi một giao diện thì nó sẽ hứa là nó sẽ cung cấp chức năng thực thi giaodiện
Trang 29Trong ngôn ngữ C#, những cấu trúc cũng được hỗ trợ, nhưng khái niệm
về ngữ nghĩa của nó thay đổi khác với C++ Trong C#, một cấu trúc được giớihạn, là kiểu dữ liệu nhỏ gọn, và khi tạo thể hiện thì nó yêu cầu ít hơn về hệ điềuhành và bộ nhớ so với một lớp Một cấu trúc thì không thể kế thừa từ một lớp hayđược kế thừa nhưng một cấu trúc có thể thực thi một giao diện
Ngôn ngữ C# cung cấp những đặc tính hướng thành phần oriented), như là những thuộc tính, những sự kiện Lập trình hướng thành phầnđược hỗ trợ bởi CLR cho phép lưu trữ metadata với mã nguồn cho một lớp.Metadata mô tả cho một lớp, bao gồm những phương thức và những thuộc tínhcủa nó, cũng như những sự bảo mật cần thiết và những thuộc tính khác Mãnguồn chứa đựng những logic cần thiết để thực hiện những chức năng của nó
(component-Do vậy, một lớp được biên dịch như là một khối self-contained, nên môi trườnghosting biết được cách đọc metadata của một lớp và mã nguồn cần thiết màkhông cần những thông tin khác để sử dụng nó
C# là ngôn ngữ này cũng hỗ trợ việc truy cập bộ nhớ trực tiếp sử dụng kiểucon trỏ của C++ và từ khóa cho dấu ngoặc [] trong toán tử Các mã nguồn này làkhông an toàn (unsafe) Và bộ giải phóng bộ nhớ tự động của CLR sẽ không thựchiện việc giải phóng những đối tượng được tham chiếu bằng sử dụng con trỏ chođến khi chúng được giải phóng
2.1.2 Nền tảng ngôn ngữ C#
2.1.2.1 Kiểu dữ liệu
Điều cốt lõi của lập trình hướng đối tượng là tạo ra các kiểu mới Kiểu làmột thứ được xem như trừu tượng Nó có thể là một bảng dữ liệu, một tiểu trình,hay một nút lệnh trong một cửa sổ Tóm lại kiểu được định nghĩa như một dạngvừa có thuộc tính chung (properties) và các hành vi ứng xử (behavior) của nó
C# là ngôn ngữ lập trình mạnh về kiểu dữ liệu, một ngôn ngữ mạnh vềkiểu dữ liệu là phải khai báo kiểu của mỗi đối tượng khi tạo (kiểu số nguyên, sốthực, kiểu chuỗi, kiểu điều khiển ) và trình biên dịch sẽ giúp cho người lập trìnhkhông bị lỗi khi chỉ cho phép một loại kiểu dữ liệu có thể được gán cho các kiểu
dữ liệu khác Kiểu dữ liệu của một đối tượng là một tín hiệu để trình biên dịch
Trang 30nhận biết kích thước của một đối tượng (kiểu int có kích thước là 4 byte) và khảnăng của nó (như một đối tượng button có thể vẽ, phản ứng khi nhấn, ).
Tương tự như C++ hay Java, C# chia thành hai tập hợp kiểu dữ liệu chính:Kiểu xây dựng sẵn (built- in) mà ngôn ngữ cung cấp cho người lập trình và kiểuđược người dùng định nghĩa (user-defined) do người lập trình tạo ra
C# phân tập hợp kiểu dữ liệu này thành hai loại: Kiểu dữ liệu giá trị(value) và kiểu dữ liệu tham chiếu (reference) Việc phân chi này do sự khácnhau khi lưu kiểu dữ liệu giá trị và kiểu dữ liệu tham chiếu trong bộ nhớ Đối vớimột kiểu dữ liệu giá trị thì sẽ được lưu giữ kích thước thật trong bộ nhớ đã cấpphát là stack Trong khi đó thì địa chỉ của kiểu dữ liệu tham chiếu thì được lưutrong stack nhưng đối tượng thật sự thì lưu trong bộ nhớ heap
Tất cả các kiểu dữ liệu xây dựng sẵn là kiểu dữ liệu giá trị ngoại trừ các đốitượng và chuỗi Và tất cả các kiểu do người dùng định nghĩa ngoại trừ kiểu cấutrúc đều là kiểu dữ liệu tham chiếu
Ngôn ngữ C# đưa ra các kiểu dữ liệu xây dựng sẵn rất hữu dụng, phù hợpvới một ngôn ngữ lập trình hiện đại, mỗi kiểu dữ liệu được ánh xạ đến một kiểu
dữ liệu được hỗ trợ bởi hệ thống xác nhận ngôn ngữ chung (Common LanguageSpecification: CLS) trong MS.NET
Trang 31Kiểu C# Số
byte Kiểu .NET Mô tả
Bool 1 Boolean Giá trị logic true/ false
Sbyte 1 Sbyte Số nguyên có dấu ( từ -128 đến 127)
Short 2 Int16 Số nguyên có dấu giá trị từ -32768 đến
32767
Ushort 2 Uint16 Số nguyên không dấu 0 – 65.535
2.147.483.647Uint 4 Uint32 Số nguyên không dấu 0 – 4.294.967.295
Float 4 Single Kiểu dấu chấm động, giá trị xấp xỉ từ
3,4E-38 đến 3,4E+3,4E-38, với 7 chữ số có nghĩaDouble 8 Double Kiểu dấu chấm động có độ chính xác gấp
đôi, giá trị xấp xỉ từ 1,7E-308 đến 1,7E+308,với 15,16 chữ số có nghĩa
decimal 8 Decime Có độ chính xác đến 28 con số và giá trị thập
phân, được dùng trong tính toán tài chính,kiểu này đòi hỏi phải có hậu tố “m” hay “M”theo sau giá trị
Long 8 Int64 Kiểu số nguyên có dấu có giá trị trong
khoảng : -9.223.370.036.854.775.808 đến9.223.372.036.854.775.807
Ulong 8 Uint64 Số nguyên không dấu từ 0 đến 0xffffffffffffffff
Bảng 3:Kiểu dữ liệu xây dựng sẵn
2.1.2.2 Biến, hằng và toán tử
a Biến: Là một vùng lưu trữ ứng với một kiểu dữ liệu
Biến có thể được gán giá trị và cũng có thể thay đổi giá trị trong khi thựchiện các lệnh của chương trình
Khai báo: <kiểu_dữ_liệu> <tên_biến> [=<giá trị>];
b Hằng: Hằng cũng là một biến nhưng giá tri của hằng không thay đổitrong khi thực hiện các lệnh của chương trình Hằng được phân thành 3loại:
- Giá trị hằng(literal)
- Biểu tượng hằng(symbolic constants)
- Kiểu liệt kê(enumerations)
Trang 32Hoặc: <enum> <tên_kiểu_liệt_kê>
- Toán tử tăng / giảm: +=,-=,*=,/=,%=
- Toán tử tăng giảm 1 đơn vị:
- Toán tử quan hệ: ==, !=, >, >=, <, <=
- Toán tử logic: !, &&, ||
- Toán tử 3 ngôi: (điều kiện)?(biểu_thức_1): (biểu_thức_2);
lệnh lặp hay vòng lặp Bao gồm các lệnh lặp for, while, do, in,và each.
a Câu lệnh phân nhánh không điều kiện
Phân nhánh không có điều kiện có thể tạo ra bằng hai cách: gọi một hàm
và dùng từ khoá Để thực hiện phân nhánh ta gọi một trong các từ khóa sau:
goto, break, continue, return,statementthrow
b Câu lệnh phân nhánh có điều kiện
Phân nhánh có điều kiện được tạo bởi các lệnh điều kiện Các từ khóa của các
lệnh này như : if, else, switch Sự phân nhánh chỉ được thực hiện khi biểu thức
điều kiện phân nhánh được xác định là đúng