Tiểu Luận Về Xử Lý Ảnh Bằng Ngôn Ngữ Lập Trình Python

Đồ án nghiên cứu Tiểu luận python và vấn đề xử lý ảnh đồ án i giới thiệu ngôn ngữ lập trình python, thiết kế chi tiết, tính toán kỹ thuật theo tiêu chuẩn, đánh giá tính khả thi dự

Chuyên ngành

Tin học

Người đăng

Ẩn danh

Thể loại

đồ án

2022

73
10
0

Phí lưu trữ

30 Point

Mục lục chi tiết

MỞ ĐẦU

1. CHƯƠNG 1: GIỚI THIỆU NGÔN NGỮ LẬP TRÌNH PYTHON

2. CHƯƠNG 2: GIỚI THIỆU CHUNG VỀ XỬ LÝ ẢNH

2.1. Hệ thống xử lý ảnh

2.2. Những khái niệm cơ bản trong xử lý ảnh

2.2.1. Ảnh số và điểm ảnh

2.2.2. Độ phân giải hình ảnh

2.2.3. Mức xám của ảnh

2.2.4. Độ sâu màu của ảnh số

3. CHƯƠNG 3: XỬ LÝ ẢNH VỚI THƯ VIỆN OPENCV

3.1. Làm quen với thư viện OpenCV

3.1.1. Đọc, hiển thị và lưu file ảnh

3.1.2. Cắt, xoay và thay đổi kích thước ảnh

3.2. Cải thiện và nâng cấp ảnh

3.2.1. Toán tử trên điểm ảnh

3.2.1.1. Một số phép biến đổi cấp xám cơ bản

Tài liệu tham khảo

Tóm tắt

I. Giới thiệu ngôn ngữ lập trình Python

Ngôn ngữ lập trình Python được phát triển bởi Guido van Rossum vào năm 1991. Với cú pháp dễ đọc và dễ học, Python trở thành lựa chọn phổ biến cho nhiều lập trình viên. Ngôn ngữ này được sử dụng rộng rãi trong nhiều lĩnh vực, bao gồm phát triển trí tuệ nhân tạo và xử lý ảnh. Các thư viện như OpenCV, Scikit-image, Pillow, và NumPy cung cấp nhiều công cụ mạnh mẽ cho việc xử lý ảnh. OpenCV là thư viện mã nguồn mở với khoảng 2000 thuật toán cho thị giác máy tính, cho phép chuyển đổi không gian màu và thực hiện các phép toán hình thái. Scikit-image chủ yếu được sử dụng trong tiền xử lý ảnh, cung cấp nhiều thuật toán hữu ích. Pillow hỗ trợ nhiều định dạng hình ảnh và cho phép thực hiện các thao tác như xoay và thay đổi kích thước. Cuối cùng, NumPy cho phép thao tác với các mảng đa chiều, rất hữu ích trong việc xử lý ảnh.

II. Giới thiệu chung về xử lý ảnh

Xử lý ảnh là một lĩnh vực con của xử lý tín hiệu số, tập trung vào việc cải thiện và phân tích thông tin từ ảnh. Quá trình này bao gồm nhiều bước, từ thu nhận ảnh đến phân tích và nhận dạng đối tượng. Đầu tiên, ảnh được thu nhận qua các thiết bị như camera và scanner, sau đó được số hóa thành các điểm ảnh (pixel). Độ phân giải của ảnh ảnh hưởng đến chất lượng hình ảnh, với độ phân giải cao hơn cho phép hiển thị nhiều chi tiết hơn. Các khái niệm như mức xámđộ sâu màu cũng rất quan trọng trong xử lý ảnh. Mức xám xác định độ sáng của mỗi pixel, trong khi độ sâu màu mô tả khả năng biểu diễn màu sắc của ảnh. Việc hiểu rõ các khái niệm này là cần thiết để thực hiện các thao tác xử lý ảnh hiệu quả.

2.1. Hệ thống xử lý ảnh

Hệ thống xử lý ảnh bao gồm các bước từ thu nhận đến phân tích. Bước đầu tiên là thu nhận ảnh, nơi ảnh được chụp và số hóa. Sau đó, ảnh sẽ được phân tích để cải thiện chất lượng và nhận dạng đối tượng. Các phương pháp như phân vùng ảnhtrích chọn đặc trưng giúp tách biệt các đối tượng trong ảnh, từ đó hỗ trợ cho việc nhận dạng và phân tích. Việc hiểu rõ quy trình này giúp tối ưu hóa các thuật toán xử lý ảnh và nâng cao hiệu quả trong các ứng dụng thực tế.

2.2. Những khái niệm cơ bản trong xử lý ảnh

Các khái niệm cơ bản trong xử lý ảnh bao gồm ảnh sốđiểm ảnh. Mỗi ảnh số được tạo thành từ một tập hợp các pixel, mỗi pixel có tọa độ và giá trị độ sáng. Độ phân giải của ảnh xác định số lượng pixel trong ảnh, ảnh hưởng đến chất lượng hiển thị. Mức xám của ảnh xác định độ sáng của mỗi pixel, trong khi độ sâu màu mô tả khả năng biểu diễn màu sắc. Những khái niệm này là nền tảng cho việc thực hiện các thao tác xử lý ảnh như cải thiện chất lượng và phân tích hình ảnh.

III. Xử lý ảnh với thư viện OpenCV

Thư viện OpenCV cung cấp nhiều công cụ mạnh mẽ cho xử lý ảnh. Đầu tiên, việc đọc, hiển thị và lưu ảnh là các thao tác cơ bản. Hàm cv2.imread() được sử dụng để đọc ảnh, trong khi cv2.imshow() hiển thị ảnh trên cửa sổ. Để lưu ảnh, hàm cv2.imwrite() được sử dụng. Các thao tác như cắt, xoay và thay đổi kích thước ảnh cũng rất quan trọng. Cắt ảnh có thể thực hiện bằng cách chỉ định vùng cần cắt, trong khi việc xoay ảnh yêu cầu xác định gốc xoay và góc xoay. Cuối cùng, hàm cv2.resize() cho phép thay đổi kích thước ảnh mà không làm mất tỷ lệ ban đầu.

3.1. Đọc hiển thị và lưu file ảnh

Đọc và hiển thị ảnh là bước đầu tiên trong xử lý ảnh. Sử dụng hàm cv2.imread(), ảnh có thể được đọc từ file và hiển thị bằng cv2.imshow(). Để lưu ảnh, hàm cv2.imwrite() được sử dụng. Việc hiểu rõ cách sử dụng các hàm này là rất quan trọng để thực hiện các thao tác xử lý ảnh cơ bản. Đặc biệt, cần lưu ý rằng OpenCV sử dụng định dạng BGR cho ảnh màu, điều này có thể gây ra sự nhầm lẫn khi làm việc với các thư viện khác sử dụng định dạng RGB.

3.2. Cắt xoay và thay đổi kích thước ảnh

Cắt ảnh là một thao tác quan trọng trong xử lý ảnh. Bằng cách chỉ định vùng cần cắt, ảnh có thể được lấy ra một cách dễ dàng. Việc xoay ảnh yêu cầu xác định gốc xoay và góc xoay, sử dụng hàm getRotationMatrix2D() để tạo ma trận xoay. Cuối cùng, hàm cv2.resize() cho phép thay đổi kích thước ảnh mà không làm mất tỷ lệ. Những thao tác này không chỉ giúp cải thiện hình ảnh mà còn hỗ trợ trong việc phân tích và nhận dạng đối tượng trong ảnh.

01/02/2025

Trích đoạn nội dung tài liệu

CHƯƠNG 1: GIỚI THIỆU NGÔN NGỮ LẬP TRÌNH PYTHON Python là một ngôn ngữ lập trình bậc cao, đa năng do Guido van Rossum tạo ra và ra mắt vào năm 1991. Python được nhiều lập trình viên lựa chọn sử dụng vì ưu thế dễ đọc, dễ học và dễ nhớ. Python được sử dụng rộng rãi trong phát triển trí tuệ nhân tạo Ban đầu Python được phát triển để chạy trên nền Unix, nhưng về sau Python được phát triển sang mọi hệ điều hành từ MS – DOS đến MAC OS, OS/2, Windows, Linux… Python được sử dụng rộng rãi trong nhiều lĩnh vực như: Lập trình web , Data Analysis( Machine Learning, Image and Video Analysis.), lập trình robot, lập trình game…. Với chủ đề về Xử lý ảnh, Python cung cấp cho chúng ta nhiều thư viện với nhiều tính năng hỗ trợ xử lý như: OpenCV, Scikit-image, PIL/pillow, Numpy, Mahotas.

OpenCV OpenCV là viết tắt của Open Source Computer Vision Library. Cung cấp cho chúng ta khoảng 2000 thuật toán tối ưu hóa cho thị giác máy tính. Với thư viện, chúng ta có thể chuyển từ không gian màu này sang không gian màu khác thông qua hàm convert(). Cung cấp các bộ lọc làm mịn hình ảnh và làm mờ ảnh.

Thực hiện cả các phép toán hình thái trên ảnh… Scikit-image Scikit là một thư viện mã nguồn mở được sử dụng chủ yếu trong tiền xử lý ảnh. Thư viện cung cấp nhiều thuật toán trong việc tạo ngưỡng với hàm try_all_threshold() trên hình ảnh; trong việc phát hiện biên có thể sử dụng hàm sobel() để thực hiện bộ lọc GVHD: NGUYỄN THỊ THANH HUYỀN VŨ THỊ ÁNH NGUYỆT ĐỒ ÁN I : PYTHON VÀ XỬ LÝ ẢNH 2 Sobel; hay làm mịn ảnh với bộ lọc Gaussian cùng hàm gaussian()… cùng rất nhiều thuật toán khác. PIL/pillow PIL là viết tắt của Python Image Library. Đây là một trong những thư viện mạnh mẽ, hỗ trợ nhiều định dạng hình ảnh như ppm, jpeg, tif, gif, png và bmp.

Thư viện giúp chúng ta thực hiện nhiều thao tác trên hình ảnh như xoay, thay đổi kích thước, cắt xén,… thông qua nhiều hàm. Numpy Với thư viện này ta có thể thao tác các kỹ thuật đơn giản như lật ảnh, trích xuất các tính năng và phân tích. Trong thư viện, hình ảnh có thể được biểu diễn bởi các mảng đa chiều, vì vậy kiểu của chúng là NdArrays. Với hình ảnh màu sẽ được thể hiện bởi mảng 3 chiều.

Mahotas Thư viện với hơn 100 chức năng xử lý hình ảnh và thị giác máy tính, nó phụ thuộc vào trình biên dịch C++ để tính toán. Trong thư viện có một vài thuật toán có sẵn đáng chú ý như: Watershed, chuyển đổi không gian màu, ngưỡng, … GVHD: NGUYỄN THỊ THANH HUYỀN VŨ THỊ ÁNH NGUYỆT ĐỒ ÁN I : PYTHON VÀ XỬ LÝ ẢNH 3 CHƯƠNG 2 : GIỚI THIỆU CHUNG VỀ XỬ LÝ ẢNH I. Hệ thống xử lý ảnh Xử lý ảnh là một phân ngành trong xử lý số tín hiệu với tín hiệu xử lý là ảnh. Nghiên cứu về sự thay đổi trạng thái ban đầu của ảnh, với mục đích cải thiện thông tin ảnh trực quan theo cách hiểu của con người, nén ảnh hoặc làm cho nó phù hợp với tri giác máy.

Phần lớn các chức năng xử lý ảnh cho ra một hình ảnh mới, đã được can thiệp. Các phương pháp xử lý ảnh dựa trên các ứng dụng chính: xử lý nâng cao chất lượng ảnh, phân tích ảnh. Dưới đây là hệ thống xử lý ảnh mô tả các bước trong quá trình xử lý ảnh: Hình 2. Hệ thống xử lý ảnh Thu nhận ảnh, chụp ảnh và số hóa ảnh Đây là công đoạn đầu tiên của quá trình xử lý ảnh, ảnh được thu nhận thông qua các thiết bị như camera, sensor, scanner,… các tín hiệu sau đó sẽ được số hóa.

Các thông số quan trọng của bước này đó là độ phân giải, chất lượng màu, dung lượng bộ nhớ và tốc độ thu nhận ảnh của các thiết bị. Phân tích ảnh và thị giác máy tính GVHD: NGUYỄN THỊ THANH HUYỀN VŨ THỊ ÁNH NGUYỆT ĐỒ ÁN I : PYTHON VÀ XỬ LÝ ẢNH 4 Giai đoạn này ta tiến hành các bước như: cải thiện nâng cấp ảnh, sửa lỗi, khôi phục ảnh; phân tách đặc trưng: tách biên, phân vùng ảnh; biểu diễn và xử lý đặc trưng hình dạng đối tượng ảnh; nhận dạng đối tượng ảnh, phân tích cảnh và hiểu cảnh. Sau khi kết thúc bước Thu nhận ảnh, chụp ảnh và số hóa ảnh , ta sẽ đi vào giai đoạn tiền xử lý. Ở bước này, chất lượng ảnh sẽ được cải thiện tốt hơn về độ tương phản, khử nhiễu, khử bóng, khử độ lệch,…, chuẩn bị cho các bước xử lý sâu sau đó.

Phân vùng ảnh (hay phân đoạn) là tách ảnh đầu vào thành các vùng thành phần có cùng tính chất nào đó dựa theo biên hay các vùng liên thông Việc chọn các tính chất để thể hiện ảnh gọi là trích chọn đặc trưng (Feature Selection) gắn với việc tách các đặc tính của ảnh dưới dạng các thông tin định lượng hoặc làm cơ sở để phân biệt lớp đối tượng này với đối tượng khác trong phạm vi ảnh nhận được. Ví dụ: trong nhận dạng ký tự trên phong bì thư, chúng ta miêu tả các đặc trưng của từng ký tự giúp phân biệt ký tự này với ký tự khác. Những khái niệm cơ bản trong xử lý ảnh 1. Ảnh số và điểm ảnh Mỗi ảnh gốc hay còn gọi là ảnh tự nhiên, là ảnh liên tục về không gian và độ sáng.

Để có thể xử lý ảnh, ta cần phải số hóa ảnh gốc đó, tức là biến đổi gần đúng một ảnh liên tục thành một tập điểm phù hợp với ảnh đó về vị trí và độ sáng. Mỗi điểm như vậy được gọi là một điểm ảnh ( picture element) viết tắt là pixel. Khoảng cách giữa các pixel được thiết lập sao cho mắt người nhìn bình thường không phân biệt được ranh giới giữa chúng. GVHD: NGUYỄN THỊ THANH HUYỀN VŨ THỊ ÁNH NGUYỆT ĐỒ ÁN I : PYTHON VÀ XỬ LÝ ẢNH 5 Hình 2.

Ảnh số Như vậy, xét về mặt toán học, ảnh số là một hàm hai biến f(x,y) , với x, y là các tọa độ. Mỗi điểm có tọa độ (x,y) là một pixel, giá trị số tại điểm (x,y) đó chính là giá trị xám ( sẽ được trình bày sau), giá trị đó là hữu hạn : 0 ≤ f(x,y) ≤ 𝑓𝑚𝑎𝑥. Độ phân giải hình ảnh Độ phân giải hình ảnh ( image resolution ) chỉ lượng thông tin được chứa đựng trong một tập tin ảnh hiển thị trên màn hình. Hay nói cách khác đó là số điểm (pixel) trong một hình ảnh số.

Đơn vị đo độ phân giải là pixel, megapixel : 1 megapixel = 109 pixel. Rõ ràng, độ phân giải càng thấp thì ảnh càng mờ: GVHD: NGUYỄN THỊ THANH HUYỀN VŨ THỊ ÁNH NGUYỆT ĐỒ ÁN I : PYTHON VÀ XỬ LÝ ẢNH 6 1412 x 1979 706 x 990 353 x 495 176 x 247 Hình 2. Độ phân giải ảnh Ảnh có độ phân giải 1412 x 1979 thì số điểm ảnh của nó là 2.348 pixel, độ phân giải gần đúng là 2,8 megapixel. Mức xám của ảnh Mỗi điểm ảnh có hai đặc trưng cơ bản là vị trí (x,y) của nó và độ xám f(x,y).

Mức xám của điểm ảnh là là kết quả của sự biến đổi tương ứng 1 giá trị độ sáng của 1 điểm ảnh với 1 giá trị nguyên dương. Thông thường nó xác định trong đoạn [0,255] tùy thuộc vào giá trị mà mỗi điểm ảnh được biểu diễn. Các thang giá trị mức xám thông thường là: 16, 32, 64, 128, 256. Mức 256 là mức phổ biến nhất.

Độ sâu màu của ảnh số Độ sâu màu của ảnh số là đại lượng mô tả khả năng biểu diễn các màu sắc trong ảnh số khi thể hiện trên các thiết bị màn hình hoặc in ấn. Đó chính là thông số thể hiện số lượng các bit được sử dụng để biểu thị màu sắc của mỗi pixel. Từ đó ta phân biệt 3 loại ảnh: ảnh nhị phân, ảnh xám và ảnh màu: GVHD: NGUYỄN THỊ THANH HUYỀN VŨ THỊ ÁNH NGUYỆT ĐỒ ÁN I : PYTHON VÀ XỬ LÝ ẢNH 7 Ảnh nhị phân (binary image) là ảnh đen trắng, mỗi pixel chỉ có 1 giá trị 0 hoặc 255, dùng 1 bit để biểu diễn một pixel. Ảnh nhị phân Ảnh xám ( gray image) là ảnh có mô hình màu đơn sắc với 256 cấp độ xám biến thiên từ đen đến trắng, mỗi pixel có 1 giá trị từ 0 đến 255, dùng 8 bit để biểu diễn một pixel.

Ảnh xám Khi biểu diễn ảnh nhị phân hay ảnh xám, ta chỉ cần một ma trận m x n, mỗi phần tử của ma trận là giá trị xám của một pixel GVHD: NGUYỄN THỊ THANH HUYỀN VŨ THỊ ÁNH NGUYỆT ĐỒ ÁN I : PYTHON VÀ XỬ LÝ ẢNH 8 Ảnh màu là ảnh thông thường ta hay nhìn thấy nhất, ở đây ta sẽ xét ảnh theo mô hình RGB: ánh sáng đỏ, ánh sáng xanh lục và ánh sáng xanh lam được tổ hợp với nhau theo nhiều phương thức khác nhau để tạo thành nhiều màu khác nhau. Mỗi pixel của ảnh màu có 3 giá trị xám tương ứng là giá trị của màu đỏ (R), giá trị của màu xanh lục (G) và giá trị của màu xanh lam ( B), mỗi giá trị là số nguyên nằm trong đoạn [0,255]. Ta dùng 24 bit ( 3 byte) để biểu diễn một pixel. Khi biểu diễn một ảnh màu, sẽ có dạng nhau sau: Để tiện cho việc lưu trữ và xử lý ta sẽ tách ma trận trên ra thành 3 ma trận tương ứng của màu đỏ, xanh lam và xanh lục.

100 101 131 100 112 20 50 3 80 [ 150 10 111] , [210 120 120] , [130 130 130] 10 200 100 260 20 20 30 30 3 R G B Mỗi ma trận được tách ra sẽ được gọi là một channel. Vì vậy ảnh màu sẽ có 3 channel: channel đỏ, channel xanh lục và channel xanh lam. GVHD: NGUYỄN THỊ THANH HUYỀN VŨ THỊ ÁNH NGUYỆT ĐỒ ÁN I : PYTHON VÀ XỬ LÝ ẢNH 9 CHƯƠNG 3: XỬ LÝ ẢNH VỚI THƯ VIỆN OPENCV I. Làm quen với thư viện OpenCV 1.

Đọc, hiển thị và lưu file ảnh Để tiến hành thực hiện được các bộ lọc, thuật toán trong xử lý ảnh thì ba thao tác đọc, hiện thị và lưu file ảnh nắm vai trò quan trọng và tối thiểu. Hình ảnh sau được sử dụng để thao tác trong phần này: Hình 3. Ảnh mẫu Trước tiên ta sẽ đưa ra đoạn code thực hiện cả ba chức năng trên: # import thư viện opencv import cv2 # Hàm cv2.imread() được dùng để đọc ảnh img_anh1 = cv2.jpg', 1) # Hàm namedWindow() thay đổi kích thước cửa sổ cv2.namedWindow('first image', cv2.WINDOW_NORMAL) GVHD: NGUYỄN THỊ THANH HUYỀN VŨ THỊ ÁNH NGUYỆT ĐỒ ÁN I : PYTHON VÀ XỬ LÝ ẢNH 10 # Hàm cv2.imshow được dùng để hiển thị ảnh trên cửa sổ cv2.

Nội dung được bảo vệ bản quyền — Tải xuống đầy đủ