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

Xây dựng chương trình xử lý ảnh Đơn giản cho phép sử dụng bộ lọc song phương và nlm chạy trên Điện thoại di Động

39 0 0
Tài liệu đã được kiểm tra trùng lặp

Đ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

Tiêu đề Xây Dựng Chương Trình Xử Lý Ảnh Đơn Giản Cho Phép Sử Dụng Bộ Lọc Song Phương Và Nlm Chạy Trên Điện Thoại Di Động
Tác giả Nguyễn Ngọc Quang
Người hướng dẫn TS. Nguyễn Hữu Tuân
Trường học Trường Đại Học Hàng Hải Việt Nam
Chuyên ngành Khoa Học Máy Tính
Thể loại Báo Cáo Bài Tập Lớn
Năm xuất bản 2024
Thành phố Hải Phòng
Định dạng
Số trang 39
Dung lượng 10,84 MB

Nội dung

Để dễ dàng và thuận tiện trong các thao tác chỉnh sửa, xử lý ảnh, em đã nghiên cứu và xây dựng một chương trình cho phép xử lý ảnh đơn giản bằng cách áp dụng các phép lọc khác nhau và cụ

Trang 1

TRƯỜNG ĐẠI HỌC HÀNG HẢI VIỆT NAM

CHẠY TRÊN ĐIỆN THOẠI DI ĐỘNG

Sinh viên thực hiện: Nguy-n Ngọc Quang – Mã SV: 92282

HẢI PHÒNG 2024

Trang 2

LỜI CẢM ƠN

Trong thời gian nghiên cứu tìm hiểu đề tài bài tập lớn tuy gặp nhiều khókhăn trong việc nghiên cứu, nhưng nhờ sự giúp đỡ, giảng dạy tận tình của thầy ởcác tiết học trên lớp, em đã hoàn thành được đề tài theo đúng tiến độ giao.Lời đầu tiên cho em gửi lời cảm ơn đến Thầy TS Nguyễn Hữu Tuân người

đã trực tiếp hướng dẫn, giảng dạy về kiến thức, phương pháp để em có thể hoànthành thành công đề tài bài tập lớn của học phần Xử lý ảnh

Mặc dù đã có nhiều cố gắng trong suốt quá trình thực hiện đề tài, song cóthể còn những mặt hạn chế, thiếu sót Em mong nhận được ý kiến đóng góp và sựchỉ dẫn của các thầy– người có chuyên môn và kiến thức sâu rộng để em có thểrút kinh nghiệm hoàn thành tốt hơn các đề tài sau này

Trang 3

TRƯỜNG ĐẠI HỌC HÀNG HẢI

BỘ MÔN KHOA HỌC MÁY TÍNH

BÀI TẬP LỚN HỌC PHẦN: XỬ LÝ ẢNH

-*** -1 Tên đề tài

Đề tài: “xây dựng chương trình xử lý ảnh đơn giản cho phép

sử dụng bộ lọc song phương và nlm chạy trên điện thoại di động”

2 Mục đích

Xây dựng một chương trình qua đó người dùng có thể chọn ảnh đầuvào, sử dụng camera của thiết bị điện thoại để xử lý bằng các phương pháplọc song phương và nlm

3 Công việc cần thực hiện

Hải Phòng, tháng năm 2024

NGƯỜI HƯỚNG DẪN

Trang 4

MỤC LỤC

CHƯƠNG I GIỚI THIỆU 1

1.1 Bài toán 1

1.2 Kết quả dự kiến 1

1.3 Phương pháp nghiên cứu 2

1.4 Bố cục đề tài 2

CHƯƠNG II CẤU HÌNH HỆ THỐNG VÀ THUẬT TOÁN CHƯƠNG TRÌNH 3 2.1 Môi trường phát triển 3

2.1.1 Ngôn ngữ lập trình 3

2.1.2 Thư viện sử dụng 5

Tìm hiểu về thuật toán của các phép lọc 9

2.1.3 Các phép lọc tuyến tính 9

2.1.4 Các phép lọc phi tuyến 15

CHƯƠNG III CÀI ĐẶT THỬ NGHIỆM VÀ KẾT LUẬN 21

3.1 Cài đặt môi trường phát triển 21

3.1.1 Cài đặt ngôn ngữ lập trình 21

3.1.2 Cài đặt thư viện 22

3.2 Xây dựng hệ thống 24

3.2.1 Mô tả các bước thực hiện 24

3.2.2 Kết quả 28

3.3 Kết luận và hướng phát triển 32

3.3.1 Ưu điểm 32

3.3.2 Nhược điểm 33

3.3.3 Hướng phát triển 33

TÀI LIỆU THAM KHẢO 35

Trang 5

CHƯƠNG I GIỚI THIỆU1.1 Bài toán

Trong thời đại hiện nay, sự phát triển của công nghệ đã góp phần khiến xử

lý ảnh trở nên hữu hiệu và có lợi ích với nhiều ban ngành chứ không chỉ riêng đốivới Khoa học máy tính và nghệ thuật Còn đối với sinh viên chuyên ngành công nghệ thông tin thì Xử lý ảnh là một lĩnh vực đang được quan tâm và trở thành môn học chuyên ngành đối với nhiều trường cao đẳng, đại học trên toàn quốc

Để dễ dàng và thuận tiện trong các thao tác chỉnh sửa, xử lý ảnh, em đã nghiên cứu và xây dựng một chương trình cho phép xử lý ảnh đơn giản bằng cách

áp dụng các phép lọc khác nhau và cụ thể là 2 phép lọc: lọc song

phương(bilateral) và loại bỏ nhiễu bằng bộ lọc Non-local Means(NLM) Người dùng sẽ chọn một bức ảnh cần thao tác, hoặc tự chụp một bức ảnh bằng chính camera điện thoại và chọn một phép lọc để xử lý

Quá trình lựa chọn và nghiên cứu đề tài song song với quá trình học tập trên giảng đường nên tiến độ được dự đoán sẽ hoàn thành cùng với tuần kết thúc học phần

1.2 Kết quả dự kiến

Kết quả sau quá trình nghiên cứu của em sẽ là một chương trình cho phépngười dùng chọn một ảnh đầu vào bằng kho lưu trữ ảnh của điện thoại hoặc chụp trực tiếp từ camera điện thoại, hệ thống sẽ nhận dạng và đọc ảnh đó, nếu ảnh tồn tại và có thể xử lý thì sẽ thực hiện áp dụng phép lọc cụ thể được yêu cầu, sau đó trả lại đầu ra cho người dùng bằng cách ghi ảnh đã thực hiện phép lọc thành 1 tệp trong hệ thống tệp cụ thể của người dùng

Về lợi ích, người dùng có thể dễ dàng xử lý ảnh và lưu kết quả một cách nhanh chóng Chương trình còn mang lại sự tiện lợi vì cho phép người dùng xử lýảnh mà không cần phải sử dụng các công cụ phức tạp

1

Trang 6

Với thời gian và năng lực có hạn nên chương trình vẫn còn nhiều thiếu sót,mong thầy có thể cùng giúp đỡ và đóng góp ý kiến với em.

1.3 Phương pháp nghiên cứu

 Thu thập và tham khảo các ứng dụng liên quan đã có trước đó:

- Là một chương trình đơn giản và khá phổ biến nên sẽ có nhiều ứng dụng tương tự đi trước, căn cứ vào đó em sẽ hiểu rõ hơn về mô hìnhthiết kế, cách ứng dụng vận hành và các phép lọc hoạt động ra sao

- Tìm hiểu về các công trình nghiên cứu, bài báo khoa học và ứng dụng đã sử dụng các thuật toán tương tự để xây dựng

 Thực hiện thử nghiệm và áp dụng thuật toán của các phép lọc:

- Sử dụng các thư viện như OpenCV kết nối với IDE Androi Studio

để thực hiện thuật toán của các phép lọc lên các ảnh thử nghiệm và chạy trên điện thoại di động

- Điều chỉnh các tham số của thuật toán để đạt được kết quả tốt nhất

1.4 Bố cục đề tài

Chương I Giới thiệu: Ở chương này, mô tả bài toán, trình bày mục tiêu và

phương pháp nghiên cứu, bố cục và đặt vấn đề

Chương II Cấu hình hệ thống và thuật toán chương trình: Sau khi giới

thiệu, đi sâu vào thuật toán của các phép lọc, xây dựng và áp dụng một cách hợp

lý, thiết kế hệ thống và mô hình ứng dụng của chương trình

Chương III Cài đặt thử nghiệm và kết luận: Từ những kết quả của bước

trên đi vào cài đặt và thử nghiệm hệ thống, trình bày kết quả đạt được sau khi thiết kế thi công Cuối cùng là tổng kết lại, trình bày những ưu điểm, khuyết điểmtrong quá trình nghiên cứu và định hướng phát triển của đề tài

2

Trang 7

CHƯƠNG II CẤU HÌNH HỆ THỐNG VÀ THUẬT TOÁN

CHƯƠNG TRÌNH2.1 Môi trường phát triển

2.1.1 Ngôn ngữ lập trình

Python là một ngôn ngữ lập trình bậc cao cho các mục đích lập trình đa

năng, do Guido van Rossum tạo ra và lần đầu ra mắt vào năm 1991 Python được thiết kế với ưu điểm mạnh là dễ đọc, dễ học và dễ nhớ Python là ngôn ngữ có hình thức rất sáng sủa, cấu trúc rõ ràng, thuận tiện cho người mới học lập trình và

là ngôn ngữ lập trình dễ học; được dùng rộng rãi trong phát triển trí tuệ nhân tạo Cấu trúc của Python còn cho phép người sử dụng viết mã lệnh với số lần gõ phímtối thiểu Vào tháng 7 năm 2018, van Rossum đã từ chức lãnh đạo trong cộng đồng ngôn ngữ Python sau 30 năm làm việc

Python là ngôn ngữ lập trình đa năng và được sử dụng trong rất nhiều lĩnh vực, có thể kể đến như:

- Phát triển phần mềm: Python là một trong những ngôn ngữ phổ biếnnhất của lĩnh vực này Nó được sử dụng để xây dựng các ứng dụng web, ứng dụng di động, ứng dụng máy tính, trò chơi, và nhiều loại phần mềm khác

- Khoa học dữ liệu và máy học: Python được sử dụng rộng rãi trong việc phân tích dữ liệu, khai phá dữ liệu, và xây dựng các mô hình máy học và học sâu Các thư viện như NumPy, Pandas, Matplotlib,

và scikit-learn là các công cụ quan trọng trong lĩnh vực này

- Trí tuệ nhân tạo: Python là một trong những ngôn ngữ phổ biến cho việc phát triển các hệ thống trí tuệ nhân tạo và xử lý ngôn ngữ tự nhiên Các thư viện như TensorFlow, PyTorch và NLTK cung cấp các công cụ mạnh mẽ để phát triển các ứng dụng trong lĩnh vực này

3

Trang 8

- Phát triển web: Python có các framework mạnh mẽ như Django và Flask, được sử dụng để xây dựng các ứng dụng web và dịch vụ web.

Hình 2.1 Biểu tượng của Python

Trong dự án lần này chúng ta sẽ sử dụng phiên bản Python 3.12 Vào ngày24/05/2023 thì phiên bản 3.12(beta) đã được phát hành với nhiều cải tiến đáng giámang tính cách mạng trong việc tối ưu hóa của ngôn ngữ lập trình Cụ thể thì phiên bản mới này đã có những sự thay đổi đáng kể như:

1 Thông báo lỗi tốt hơn

2 Khả năng giám sát và gỡ lỗi nhanh hơn

3 Cải tiến khả năng gợi ý code khi đánh máy

4 Cải thiện hiệu suất

Những phát triển này của phiên bản mới đã giúp em cải thiện rất nhiều về hiệu suất của dự án lần này

4

Trang 9

Hình 2.2 Phiên bản 3.12 của Python

2.1.2 Thư viện sử dụng

a os

Thư viện là một thư viện tiêu chuẩn của Python cung cấp các công cụ os

và chức năng để tương tác với hệ thống máy tính Với , người lập trình có thể os

thực hiện nhiều thao tác liên quan đến tệp và thư mục, bao gồm tạo, xóa, di chuyển, đổi tên, kiểm tra sự tồn tại, lấy thông tin và nhiều hơn nữa

Các chức năng chính của thư viện bao gồm tạo và xóa tệp và thư mục, os

di chuyển và đổi tên tệp và thư mục, kiểm tra sự tồn tại của tệp và thư mục, lấy thông tin về tệp và thư mục, và tương tác với biến môi trường Thêm vào đó, os

còn cung cấp các phương thức để tạo và thao tác với tiến trình, cũng như tương tác với đường dẫn và hệ điều hành

Trong dự án này, chúng ta dùng thư viện chủ yếu để tạo và đổi tên thư os

mục

5

Trang 10

Các tính năng chính của OpenCV bao gồm đọc và ghi ảnh từ và đến nhiều nguồn khác nhau, xử lý và biến đổi ảnh số, phát hiện và theo dõi đối tượng trong ảnh và video, phát hiện biên, làm mịn và làm nổi bật ảnh, và nhiều hơn nữa.Trong Python, OpenCV được tích hợp thông qua thư viện cv2 Để sử dụng

nó, bạn cần phải cài đặt trên máy tính của mình Sau đó, vào môi trường lập trình

và import thư viện cv2 để sử dụng các chức năng và tính năng có sẵn trong thư viện để xử lý ảnh và video

6

Trang 11

Hình 2.4 Thư viện OpenCV

c NumPy

NumPy là một thư viện mã nguồn mở và miễn phí trong Python, cung cấp các cấu trúc dữ liệu và công cụ để làm việc với mảng nhiều chiều và các phép toán số học trên chúng Với NumPy, người lập trình có thể thực hiện các tính toán

số học phức tạp và hiệu quả trên dữ liệu mảng, làm cho nó trở thành một công cụ quan trọng trong nhiều lĩnh vực như khoa học dữ liệu, máy học, và tính toán khoahọc

Các tính năng chính của NumPy bao gồm:

1 Mảng nhiều chiều (ndarray): NumPy cung cấp một cấu trúc dữ liệu mảng

nhiều chiều, được gọi là ndarray, cho phép lưu trữ dữ liệu số học trong các mảng đa chiều

2 Phép toán số học và ma trận: NumPy cung cấp các hàm và phương thức

để thực hiện các phép toán số học và ma trận, bao gồm cộng, trừ, nhân, chia, tích vô hướng, tích chập, và nhiều hơn nữa

3 Truy cập và cắt lát mảng: NumPy cung cấp các công cụ để truy cập và cắt

lát mảng, cho phép trích xuất các phần tử, hàng, cột hoặc khối dữ liệu từ mảng

7

Trang 12

4 Tính toán thống kê và biểu đồ: NumPy cung cấp các hàm để tính toán các

thống kê cơ bản như trung bình, phương sai, và độ lệch chuẩn, cũng như tạo và hiển thị biểu đồ từ dữ liệu mảng

Hình 2 5 Thư viện NumPy

d Tkinter

Tkinter là một thư viện đồ họa cho Python, cung cấp các công cụ để xây dựng các ứng dụng GUI (Giao diện người dùng đồ họa) trên nền tảng desktop.Tkinter là một phần của Python được phân phối hầu hết các phiên bản Python

Hình 2 6 Thư viện Tkinter

Tkinter là một giao diện người dùng đơn giản và rất dễ sử dụng, với các thành phần giao diện người dùng phổ biến như hộp văn bản, nút bấm, danh sách thả xuống,… Nó cho phép người dùng tạo các ứng dụng GUI đơn giản hoặc phứctạp, được sử dụng rộng rãi trong các ứng dụng desktop của Python

8

Trang 13

Tìm hiểu về thuật toán của các phép lọc

2.1.3 Các phép lọc tuyến tính

 Phép lọc trung bình – Mean Filter

Đây là bộ lọc đơn giản nhất Nó được xây dựng dựa trên ý tưởng tính giá trị một điểm ảnh bằng trung bình cộng các điểm ảnh xung quanh nó

Hình 2 7 Thuật toán Mean

Và đây là kết quả khi thử lọc 1 ảnh với các loại nhiễu khác nhau:

9

Trang 14

 Phép lọc Gaussian – Gaussian Filter

Bộ lọc Gauss được cho là bộ lọc hữu ích nhất, được thực hiện bằng cách nhân chập ảnh đầu vào với một ma trận lọc Gauss sau đó cộng chúng lại để tạo thành ảnh đầu ra

Ý tưởng chung là giá trị mỗi điểm ảnh sẽ phụ thuộc nhiều vào các điểm ảnh ở gầnhơn là các điểm ảnh ở xa Trọng số của sự phụ thuộc được lấy theo hàm Gauss (cũng được sử dụng trong quy luật phân phối chuẩn)

Biểu diễn của ma trận lọc Gauss:

Code thực tế lọc Gauss với Python – OpenCV:

10

Trang 15

Hình 2 8 Thuật toán Gauss

Và kết quả khi chạy đoạn code trên:

 Lọc Prewitt – Đạo hàm ảnh

Đạo hàm của ảnh thực chất là một phương pháp để tìm cạnh của ảnh đó Có nhiềuphương pháp đạo hàm ảnh nhưng ở đây chúng ta sẽ đi sâu vào đạo hàm Prewitt

11

Trang 16

Prewitt Masks được định nghĩa như sau:

Sau đây là kết quả của 1 ảnh được áp dụng nhân lọc trên:

 Lọc Laplacian – Laplacian Filter

Laplacian được tính theo công thức:

Với ksize = 1, ma trận lọc sẽ được sử dụng là:

12

Trang 17

Cài đặt Laplacian trong OpenCV:

Hình 2 9 Thuật toán Laplacian

Và đây là kết quả sau khi thực hiện đoạn code trên:

13

Trang 18

 Phép lọc LoG – Laplacian of Gaussian

Phương pháp lọc này có thể hiểu đơn giản là chúng ta áp dụng bộ lọc Gauss cho ảnh đầu vào, sau đó áp dụng tiếp bộ lọc Laplacian cho ảnh kết quả vừa thu được.Trong phương pháp này, bộ lọc Gaussian được kết hợp với Laplacian cho phép hiển thị những vùng ảnh có cường độ thay đổi nhanh do đó làm tăng hiệu quả phát hiện biên Nó cho phép làm việc với một diện tích rộng hơn xung quanh điểm ảnh đang được nghiên cứu nhằm phát hiện chính xác hơn vị trí của đường biên Nhược điểm của phương pháp này là không xác định được hướng của biên

do sử dụng hai bộ lọc Laplacian quá khác nhau

Đây là công thức để áp dụng LoG cho ảnh:

Áp dụng ta được kết quả như sau:

14

Trang 19

2.1.4 Các phép lọc phi tuyến

 Phép lọc trung vị – Median Filter

Phép lọc trung vị cũng được thực hiện với các ma trận lọc Tuy nhiên nó tính trung vị tất cả các giá trị điểm ảnh trong vùng ma trận lọc và sử dụng trung vị nàycho giá trị điểm trung tâm Một điều khá thú vị là với các cách lọc ở trên, giá trị điểm trung tâm được tính mới, còn với phép lọc trung vị, giá trị điểm trung tâm luôn được thay bằng một giá trị điểm ảnh trong bức ảnh đầu vào Do vậy, phươngpháp lọc này có khả năng loại bỏ nhiếu muối tiêu khá tốt

Tương tự các phép lọc trên, ta thay bước lọc thành:

Hình 2 10 Thuật toán Median

Và đây là kết quả thực hiện lọc trung vị:

15

Trang 20

 Phép lọc song phương – Bilateral Filter

Đây là một bộ lọc hiệu quả cao trong việc loại bỏ nhiễu mà vẫn giữ lại được các đường viền (cạnh) trong ảnh

Bộ lọc Bilateral cũng sử dụng một bộ lọc Gauss với khoảng cách đến điểm trung tâm, đảm bảo chỉ có các điểm ở gần tham gia vào giá trị của điểm ảnh trung tâm Tuy vậy nó sử dụng thêm một hàm Gauss cho mức xám, đảm bảo chỉ các điểm ảnh có mức xám tương đồng với điểm ảnh trung tâm tham gia vào quá trình làm mịn

Bộ lọc Bilateral có nhược điểm là chậm hơn các bộ lọc khác

Đây là cách sử dụng bộ lọc Bilateral trong OpenCV:

Hình 2 11 Thuật toán Bilateral

Và đây là kết quả, như chúng ta có thể thấy, các texture được lọc rất tốt trong khi các đường biên trong ảnh vẫn được bảo toàn, không bị mờ đi

16

Trang 21

 Phép lọc Linear – Linear Sharpen

Phép lọc linear sharpen là một kỹ thuật xử lý ảnh được sử dụng để làm nổi bật cácđặc điểm cạnh và chi tiết trong ảnh bằng cách tăng độ tương phản giữa các pixel gần nhau

Phép lọc sharpen thường sử dụng một ma trận kernel (còn được gọi là ma trận mask) để áp dụng phép toán convolution lên toàn bộ ảnh Ma trận kernel này có thể được thiết kế để tăng giá trị của pixel ở trung tâm của một vùng nhỏ trong ảnh, trong khi giảm giá trị của các pixel lân cận Kết quả là các đặc điểm cạnh và chi tiết trong ảnh trở nên nổi bật hơn

Code thực tế áp dụng Linear Python – OpenCV:

17

Trang 22

Hình 2 12 Thuật toán Linear

Đây là kết quả sau khi làm sắc nét ảnh:

 Phép lọc Motion – Motion Blur

Bộ lọc motion blur là một loại bộ lọc được sử dụng trong xử lý ảnh để mô phỏng hiệu ứng mờ chuyển động Hiệu ứng này thường được tạo ra bởi sự di chuyển tương đối giữa máy ảnh và đối tượng khi chụp ảnh trong thời gian dài hoặc bởi sự

di chuyển nhanh của đối tượng trong khung hình

Hiệu ứng motion blur tạo ra một mờ dài theo hướng chuyển động của đối tượng, tạo cảm giác chuyển động hoặc động lực trong bức ảnh Điều này thường được sửdụng trong nhiều ứng dụng, từ nhiếp ảnh nghệ thuật đến biên tập ảnh và video.Dưới đây là một ví dụ áp dụng bộ lọc motion blur lên một ảnh sử dụng Python – OpenCV:

18

Ngày đăng: 06/02/2025, 16:16

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

TÀI LIỆU LIÊN QUAN