1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Khoa công nghệ thông tin toán Ứng dụng và thống kê cho công nghệ thông tin

21 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 đề Khoa Công Nghệ Thông Tin Toán Ứng Dụng Và Thống Kê Cho Công Nghệ Thông Tin
Tác giả Trần Lê Bảo Duy
Người hướng dẫn GV. Phan Thị Phương Uyên, GV. Vũ Quốc Hoàng, GV. Nguyễn Văn Quang Huy, GV. Nguyễn Ngọc Toàn
Trường học Đại học Quốc gia Thành phố Hồ Chí Minh
Chuyên ngành Công nghệ thông tin
Thể loại project
Thành phố Thành phố Hồ Chí Minh
Định dạng
Số trang 21
Dung lượng 1,16 MB

Nội dung

Tổng quanGiới thiệu Trong đồ án cá nhân lần này, sinh viên được yêu cầu cài đặt một chương trình giúp xử lý ảnh đầuvào về độ sáng, độ tương phản, lật ảnh, chuyển đổi ảnh thành ảnh xám/ s

Trang 1

ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN

KHOA CÔNG NGHỆ THÔNG TIN

TOÁN ỨNG DỤNG VÀ THỐNG KÊ CHO CÔNG NGHỆ THÔNG TIN

|GIÁO VIÊN HƯỚNG DẪN|

GV Phan Thị Phương Uyên

Trang 2

Mục lục

Tổng quan 3

Giới thiệu 3

Thông tin thành viên 3

Danh mục công việc 3

Mô tả ý tưởng 3

Độ sáng và độ tương phản 4

Lật ảnh 4

Kernel 5

Gaussian blur: 5

Laplacian Filter 6

Phương trình đường tròn 6

Lọc ảnh từ RGB sang ảnh xám hay sepia 6

Ảnh xám 6

Ảnh sepia 7

Áp dụng thuật toán 7

Mô tả các hàm 9

Bảng đánh giá mức độ hoàn thành 14

Các nguồn dữ liệu 21

Trang 3

Tổng quan

Giới thiệu

Trong đồ án cá nhân lần này, sinh viên được yêu cầu cài đặt một chương trình giúp xử lý ảnh đầuvào về độ sáng, độ tương phản, lật ảnh, chuyển đổi ảnh thành ảnh xám/ sepia, làm mờ/ rõ và cắtảnh Mục đích là áp dụng các kiến thức toán học về vector cũng như làm việc vơi các thư việntoán học của NumPy

Quy mô: Cá nhân

Ngôn ngữ: Python

Thông tin thành viên

Tên: Trần Lê Bảo Duy

Trang 4

Độ sáng và độ tương phản

Độ sáng liên quan đến mức sáng tối của một điểm ảnh trong hình ảnh Sau khi chuyển hình ảnh

về dạng mảng numpy, ta có thể thay đổi giá trị độ sáng của một điểm ảnh bằng công thức:

G(x,y)=F(x,y)+B

Với:

 F(x,y) là giá trị điểm ảnh chưa được xử lý tại vị trí (x,y)

 G(x,y) là giá trị điểm ảnh sau khi được xử lí tại vị trí (x,y)

 B là giá trị thay đổi độ sáng.[1]

Độ tương phản là sự khác biệt của giá trị đen và trắng trên ảnh Tương tự như độ sáng, sau khichuyển về dạng mảng numpy, ta có thể thay đổi độ tương phản bằng công thức sau:

G(x,y)=A⋅F(x,y)

Với:

 F(x,y) là giá trị điểm ảnh chưa được xử lý tại vị trí (x,y)

 G(x,y) là giá trị điểm ảnh sau khi được xử lí tại vị trí (x,y)

 A là giá trị thay đổi về độ chênh lệch tương phản.[1]

Lật ảnh

Trong ma trận, ta có thể lật ma trận để tạo ra 1 ma trận mới với các phần tử tương tự như ma trận

cũ và các phần tử ở vị trí mới đối xứng qua 1 trục với phần tử gốc có giá trị như nhau

Trang 5

Hay còn gọi là convolution matrix, hay mask Là 1 kĩ thuật quan trọng trong xử lý hình ảnh.

Kernel là một ma trận nhỏ được sử dụng để làm mờ, làm sắc nét, dập nổi, phát hiện canh,… Điềunày được thực hiện bằng cách thực hiện một phép chập giữa hạt nhân và hình ảnh Hoặc đơngiản hơn, khi mỗi pixel trong hình ảnh đầu ra là một chức năng của các pixel gần đó (bao gồm cảchính nó) trong hình ảnh đầu vào, hạt nhân là chức năng đó.[3]

Trong đồ án này, em sử dụng các kernel để có thể làm mờ, làm sắc nét Cụ thể như sau:

Gaussian blur:

Trong xử lý hình ảnh, hiệu ứng mờ Gaussian (còn được gọi là làm mịn Gaussian) là kết quả của việc làm mờ hình ảnh bằng hàm Gaussian(được đặt theo tên của nhà toán học và khoa học

Carl Friendrich Gauss)

Đây là một hiệu ứng được sử dụng rộng rãi trong phần mềm đồ họa, thường để giảm nhiễu hìnhảnh và giảm chi tiết Hiệu ứng hình ảnh của kỹ thuật làm mờ này là hiệu ứng nhòe mượt màgiống như xem ảnh qua màn hình mờ

Do ảnh được tạo ra dưới dạng mảng numpy 2 chiều nên công thức được sử dụng như sau:

Các giá trị nhận được từ công thức trên được sử dụng để xây dựng 1 kernel để áp dụng cho ảnhgốc Giá trị mới của mỗi pixel được đặt thành trung bình có trọng số của vùng lân cận của pixel

đó Giá trị của pixel gốc nhận được trọng lượng nặng nhất (có giá trị Gaussian cao nhất) và cácpixel lân cận nhận được trọng số nhỏ hơn khi khoảng cách của chúng đến pixel ban đầu tăng lên.Điều này dẫn đến hiệu ứng nhòe giúp bảo toàn ranh giới và cạnh

Hiệu ứng mờ Gaussian thường được tạo ra bằng cách kết hợp một hình ảnh với Kernel của cácgiá trị Gaussian Trong thực tế, tốt nhất là tận dụng thuộc tính có thể tách rời của Gaussian blurbằng cách chia quá trình thành hai lần truyền Trong lần truyền đầu tiên, hạt nhân một chiềuđược sử dụng để làm mờ hình ảnh chỉ theo hướng ngang hoặc dọc Trong lần truyền qua thứ hai,

Trang 6

kernel truyền vào sẽ được sử dụng để làm mờ theo hướng còn lại Hiệu ứng kết quả giống nhưkết hợp với hạt nhân hai chiều trong một lần truyền, nhưng ít tính toán hơn.

Laplacian Filter

Là 1 công cụ được sử dụng trong việc phát hiện cạnh và làm sắc nét trong xử lý ảnh, Laplacian làmột toán tử đạo hàm bậc hai được sử dụng để xác định các vùng có sự thay đổi cường độ sángmạnh Nó được định nghĩa như là tổng của các đạo hàm bậc hai theo hai chiều (x và y) [5]

Trong xử lý ảnh, với mảng hai chiều, Laplacian có thể được đưa ra dưới dạng kernel sau:

Khi áp dụng kernel này lên một ảnh, nó sẽ tính toán sự khác biệt giữa giá trị cường độ sáng củamột điểm ảnh và giá trị cường độ sáng trung bình của các điểm ảnh xung quanh Kết quả là, cácđiểm ảnh ở biên (cạnh) sẽ có giá trị lớn hơn so với các điểm ảnh ở vùng đồng nhất.[6]

Lọc ảnh từ RGB sang ảnh xám hay sepia

Ảnh xám

Ảnh xám hay còn gọi là ảnh đơn sắc (monochromatic) Ảnh 8 mức xám mỗi điểm ảnh sẽ có giátrị nằm trong đoạn [0-7], ảnh 256 mức xám mỗi điểm ảnh sẽ có giá trị nằm trong đoạn [0-255].Giá trị của điểm ảnh bằng 0 đại diện cho điểm ảnh tối (đen), giá trị điểm ảnh lơn nhất đại diệncho điểm ảnh sáng (trắng)

Độ sáng được tính theo công thức: (chuyển đổi từ hệ màu RGB)

S  =  0.2989R  +  0.5870G  +  0.1140B[7]

Trang 7

ta sẽ lấy giá trị lớn nhất hoặc nhỏ nhất trong giới hạn.

4 Thay đổi độ tương phản:

Cũng tương tự như khi gia giảm độ sáng, thay đổi độ tương phản cũng cần phải giới hạnlại giá trị của mỗi điểm ảnh

5 Đảo ảnh:

6 Chuyển ảnh RGB về ảnh xám:

Ta thực hiện phép nhân ma trận giữa các giá trị RGB của điểm ảnh với trọng số [0.2989,0.5870, 0.1140] Tương tự, ta cũng cần phải giới hạn lại giá trị của các điểm ảnh để chocác điểm ảnh nằm trong khoảng phù hợp Sau đó, sao chép giá trị grayscale vào ba kênh(R, G, B) để tạo ra một ảnh RGB Dù tất cả các kênh đều giống nhau (grayscale), việc sửdụng định dạng RGB giúp hiển thị ảnh đúng cách trong các công cụ yêu cầu định dạng bakênh

7 Chuyển ảnh RGB về ảnh Sepia:

Áp dụng bộ lọc Sepia, ta nhân ma trận ảnh với ma trận chuyển vị của bộ lọc Sepia để cóthể áp dụng bộ lọc này cho từng điểm ảnh, chuyển giá trị RGB về thành giá trị màu

Trang 8

Sepia Ta vẫn phải giới hạn lại các giá trị của điểm ảnh để đảm bảo rằng các giá trị trả vềphù hợp.

với giá trị càng ra ngoài càng giảm dần

Chuẩn hóa Tổng tất cả các giá trị trong kernel được chuẩn hóa để bằng 1 Điều này đảmbảo rằng khi áp dụng kernel này lên ảnh, cường độ của các điểm ảnh không thay đổi

Áp dụng kernel vào việc làm mờ ảnh Tạo 1 vùng đệm dựa trên kích thước của kernel và

độ lệch chuẩn σ đã cho trước vùng đệm này sẽ được thêm vào các cạnh của ảnh để đảmbảo kích thước của ảnh không thay đổi sau khi dung kernel

Tạo mảng mới có cùng kích thước với ảnh gốc để lưu kết quả làm mờ Sau đó duyệt quatất cả các điểm ảnh trong ảnh gốc, tại mỗi điểm ảnh, ta lại áp dụng kernel Gaussian đểtính tổng của các vùng xung quanh pixel với kernel và lưu kết quả lại vào mảng mới

9 Làm rõ ảnh:

Tạo một bộ lọc Laplacian- là một mảng 3x3 được sử dụng để phát hiện các cạnh trongảnh

Tạo vùng đệm xung quanh ảnh gốc để xử lý các điểm ảnh biên khi áp dụng bộ lọc

Tạo một mảng mới có kích thước tương tự ảnh cũ Sau đó áp dụng bộ lọc Laplacian: tínhtoán độ mạnh của các cạnh, vòng lập duyệt qua các kênh màu và tăng cường giá trị củacủa các điểm ảnh bằng cách cộng với độ mạnh của cạnh

Sau đó lưu ảnh đã được làm rõ vào mảng mới tạo

10 Cắt ảnh theo kích thước:

Xác định kích thước, số lượng kênh màu

Xác định vị trí bắt đầu (trái và trên) của vùng cần cắt sao cho vùng này nằm ở trung tâmcủa hình ảnh

Tính toán vị trí kết thúc (phải và dưới) của vùng cần cắt dựa trên kích thước mới.u củaảnh

Sử dụng các tọa độ đã tính để cắt phần trung tâm của hình ảnh

Trang 9

Hiển thị hình ảnh đã được cắt và lưu vào tệp tin.

11 Căt ảnh hình tròn theo bán kính:

Xác định kích thước và số lượng kênh màu của hình ảnh Xác định tâm của hình ảnh, tọa

độ trung tâm theo chiều cao và chiều rộng

Tạo một mặt nạ, trong đó các điểm ảnh trong bán kính được chỉ định có giá trị True.Dùng mặt nạ để giữ lại các điểm ảnh trong vòng tròn và loại các điểm ảnh bên ngoàivòng tròn

Tham số truyền vào: img_path (đường dẫn đến file hình ảnh), kiểu str

Kết quả trả về: mảng NumPy (cao, rộng, số kênh màu)

Hàm hiển thị hình ảnh- show_img

Mục đích: hiển thị hình ảnh tử mảng dữ liệu NumPy

Tham số truyền vào: img_2D: mảng dữ liệu 2D kiểu NumPy

Kết quả trả về: hiển thị hình ảnh lên màn hình

Hàm lưu hình ảnh- save_img

Mục đích: lưu một hình ảnh vào đường dẫn cho trước

Tham số truyền vào:

 img_2D: mảng dữ liệu 2D dạng Numpy

Trang 10

 img: Mảng NumPy (ảnh).

 brighten: Giá trị nguyên để tăng độ sáng

 darken: Giá trị nguyên để giảm độ sáng

Mục đích: Thay đổi độ tương phản của hình ảnh, tăng hoặc giảm độ tương phản, sau đó hiển thị

và lưu hình ảnh đã thay đổi

 Tăng độ tương phản: Nhân mỗi pixel của hình ảnh với giá trị contrast, sau đó cắt giá trị

để nằm trong khoảng 0-255 và chuyển đổi thành kiểu uint8

 Giảm độ tương phản: Chia mỗi pixel của hình ảnh cho giá trị contrast, sau đó cắt giá trị

để nằm trong khoảng 0-255 và chuyển đổi thành kiểu uint8

Kết quả trả về: Không trả về giá trị, chỉ hiển thị và lưu hình ảnh đã thay đổi.

 Lật dọc hình ảnh: Sử dụng hàm np.flipud để lật hình ảnh theo chiều dọc

Kết quả trả về: Không trả về giá trị, chỉ hiển thị và lưu hình ảnh đã lật.

Trang 11

 Lật ngang hình ảnh: Sử dụng hàm np.fliplr để lật hình ảnh theo chiều ngang.

Kết quả trả về: Không trả về giá trị, chỉ hiển thị và lưu hình ảnh đã lật.

Kết quả trả về: Không trả về giá trị, chỉ hiển thị và lưu hình ảnh đã chuyển đổi.

Trang 12

 size: Kích thước của kernel (phải là số lẻ).

 sigma: Độ lệch chuẩn của phân phối Gaussian

Kết quả trả về: Mảng NumPy 2D đại diện cho kernel Gaussian.

 kernel_size: Kích thước của kernel Gaussian

 sigma: Độ lệch chuẩn cho kernel Gaussian

Cách hoạt động:

 Tạo kernel Gaussian

 Thêm đệm cho hình ảnh

 Áp dụng kernel Gaussian lên mỗi pixel để tạo ra hình ảnh đã làm mờ

Kết quả trả về: Không trả về giá trị, chỉ hiển thị và lưu hình ảnh đã làm mờ.

 Áp dụng bộ lọc Laplacian lên từng kênh màu để tăng cường các cạnh

Kết quả trả về: Không trả về giá trị, chỉ hiển thị và lưu hình ảnh đã làm nét.

Hàm crop_center

Trang 13

Mục đích: Cắt phần trung tâm của hình ảnh theo kích thước chiều rộng và chiều cao mới, sau đó

hiển thị và lưu hình ảnh đã cắt

Tham số:

 img: Mảng NumPy (ảnh)

 new_width: Chiều rộng mới cho ảnh cắt

 new_height: Chiều cao mới cho ảnh cắt

Mục đích: Hàm thực thi chính của chương trình Hàm này sẽ tiến hành một số bước như sau:

1 Yêu cầu người dùng nhập đường dẫn đến ảnh lưu trong thiết bị thông qua hàm input

2 Tiến hành đọc ảnh bằng hàm read_img

3 Nhập vào lựa chọn người dùng muốn thực hiên như sau từ 1 đến 7:

1 thay đổi độ sáng

2 thay đổi độ tương phản

3 lật ảnh Sau khi chọn có thêm lựa chọn lật ngang hoặc dọc

Trang 14

4 chuyển đổi ảnh thành ảnh xám hay ảnh Sepia

Trang 15

Giảm độ sáng:

2 Thay đổi độ

tương phản

100% Tăng độ tương phản:

Trang 16

Giảm độ tương phản:

Trang 17

3.1 Lật ảnh ngang 100%

3.2 Lật ảnh dọc 100%

Trang 18

4.1 RGB thành ảnh

4.2 RGB thành ảnhSepia 100%

Trang 19

5.1 Làm mờ ảnh 100%

5.2 Làm sắc nét ảnh 100%

Trang 21

nhỏ 2x

Đánh giá tốc độ chạy của từng hàm:

STT Chức năng/ Hàm Mức độ hoàn thành Thời gian xử lý

2 Thay đổi độ tương phản 100% 0.3s cho cả tăng và giảm

7.2 Cắt ảnh theo khung elip 0%

Qua bảng xử lý trên, ta có thể nhận xét rằng thuật toán làm mờ ảnh là thuật toán phức tạp nhấtvới thời gian xử lý cao hơn hẳn so với các thuật toán khác

Các nguồn dữ liệu

Xử Lý Ảnh Với OpenCV: Độ Sáng, Độ Tương Phản Và Biểu Đồ Tần Số Histogram(iostream.co) [1] Truy cập vào ngày 30/07/2024

https://vinbigdata.com/camera-ai/xu-ly-hinh-anh-trong-python-tu-thuat-toan-den-cong-cu.html#4_NumPy [2] Truy cập vào 30/07/2024

https://en.wikipedia.org/wiki/Kernel_(image_processing) [3] Truy cập ngày 30/07/2024

https://en.wikipedia.org/wiki/Gaussian_blur [4] Truy cập ngày 30/07/2024

https://www.educative.io/answers/what-is-the-laplacian-filter [5] Truy cập vào ngày 30/07/2024https://en.wikipedia.org/wiki/Discrete_Laplace_operator [6] Truy cập vào ngày 30/07/2024https://vtct.wordpress.com/2013/05/13/tao-anh-xam-grayscale/ [7] Truy cập vào ngày30/07/2024

array [8] Truy cập vào ngày 30/07/2024

Ngày đăng: 06/12/2024, 12:40

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

TÀI LIỆU LIÊN QUAN

w