Tải bản đầy đủ (.doc) (21 trang)

ĐỒ ÁN CƠ SỞ - ĐỀ TÀI XÂY DỰNG ỨNG DỤNG HIỆU CHỈNH HÌNH ẢNH TRÊN ĐIỆN THOẠI DI ĐỘNG

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (7.64 MB, 21 trang )

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ
TRUYỀN THÔNG VIỆT – HÀN
KHOA KHOA HỌC MÁY TÍNH

ĐỒ ÁN CƠ SỞ 5
ĐỀ TÀI

XÂY DỰNG ỨNG DỤNG HIỆU CHỈNH HÌNH
ẢNH TRÊN ĐIỆN THOẠI DI ĐỘNG

Sinh viên thực hiện : NGUYỄN QUANG HUY
Lớp

: 18IT5

Giảng viên hướng dẫn

: ThS. LÊ VIẾT TRƯƠNG

Đà Nẵng, tháng 5 năm 2021


TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ
TRUYỀN THÔNG VIỆT – HÀN
KHOA KHOA HỌC MÁY TÍNH

ĐỒ ÁN CƠ SỞ 5
ĐỀ TÀI

XÂY DỰNG ỨNG DỤNG HIỆU CHỈNH
HÌNH ẢNH TRÊN ĐIỆN THOẠI DI ĐỘNG



Đà Nẵng, tháng 5 năm 2021


NHẬN XÉT
(Của giảng viên hướng dẫn)

……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
….
Đà Nẵng, ngày 30 tháng 05 năm 2021
Giảng viên hướng dẫn

1


LỜI CẢM ƠN
Lời đầu tiên em xin gửi lời cảm ơn đến thầy Lê Viết Trương đã tận tình chỉ bảo

và giúp đỡ để em có thể hồn thành đồ án môn học này. Trong suốt quá thời gian
học và làm đồ án môn học, thầy đã dành rất nhiều thời gian quý báu để tận tình chỉ
bảo, hướng dẫn, định hướng cho em thực hiện đồ án.
Ngoài ra em xin gửi lời cảm ơn đến các thầy cô giáo của Trường Đại học Công
nghệ thông tin và Truyền thông Việt- Hàn đã giảng dạy để em có được kiến thức để
có thể hồn thành được đồ án này.
Q trình thực hiện và kết quả đồ án không tránh khỏi những thiếu sót, hạn chế
nên em mong sẽ nhận được sự chỉ dẫn và đóng góp ý kiến của các thầy cô.
Em xin chân thành cảm ơn !

2


MỤC LỤC
NHẬN XÉT.......................................................................................................1
LỜI CẢM ƠN....................................................................................................2
MỤC LỤC 3
MỞ ĐẦU 4
1. Giới thiệu...............................................................................................4
2. Bố cục....................................................................................................5
Chương 1 GIỚI THIỆU TỔNG QUAN.........................................................6
1. Tổng quan về chỉnh sửa ảnh................................................................6
2. Các tính năng của trình chỉnh sửa ảnh...............................................6
3. Các công cụ...........................................................................................8
3.1. Thư viện OpenCV..............................................................................9
Chương 2 CƠ SỞ LÝ THUYẾT...................................................................10
1. Một chút căn bản về ảnh kỹ thuật số (digital image).......................10
2. Xử lý ảnh.............................................................................................11
2.1. Chuyển ảnh màu sang grayscale......................................................11
2.2. Thay đổi độ tương phản (contrast)...................................................11

2.3. Thay đổi độ sáng (brightness)............................................................12
Chương 3 DEMO ỨNG DỤNG....................................................................15
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN......................................................18
1.Kết Luận...................................................................................................18
2.Hướng phát triển......................................................................................18
DANH MỤC TÀI LIỆU THAM KHẢO..........................................................19

3


MỞ ĐẦU
1.

Giới thiệu
Ngày nay, điện thoại di động đã dần trở nên phổ biến trên thế giới và là một

phần không thể thiếu trong đời sống cảu mỗi người, với sự kế thừa những ưu
việt của các hệ điều hành ra đời trước và sự kết hợp của nhiều công nghệ tiên
tiến nhất hiện nay.
Cùng với sự phát triển không ngừng của công nghệ thông tin, các siêu
phẩm điện thoại thông minh ra đời, các thiết bị di động như điện thoại, máy tính
bảng, máy nghe nhạc, selfie... ngày càng phát triển mạnh mẽ, tạo nên cuộc cạnh
tranh giữa các hãng phát triển di động. Ngày càng nhiều sản phẩm di động thông
minh ra đời được nâng cấp và cải thiện rất lớn về hiệu suất cũng như cấu hình
cao đáp ứng nhu cầu của người sử dụng. Bên cạnh những chức năng quan trọng
của một chiếc smartphone, một chức năng cũng khơng thể thiếu đó là chiếc
camera chụp ảnh, để lưu trữ lại những kỷ niệm đẹp, những khoảnh khắc ý
nghĩa... Những chiếc smartphone ngày càng được cải thiện cả về tính năng lẫn
chất lượng phần cứng, camera trên điện thoại cũng ngày một hoàn thiện hơn, áp
dụng những công nghệ xử lý ảnh tiên tiến để cho ra những bức ảnh đẹp và trân

thực nhất, đáp ứng nhu cầu chụp ảnh, selfie với chất
lượng hình ảnh cao.
Tuy nhiên, những chiếc camera mặc định của điện thoại thường chỉ cho ra
những hình ảnh thơ và khơng làm hài lịng người sử dụng, đôi khi họ muốn biến
những bức ảnh kém nổi bật sau khi chụp trở nên lung linh và sắc nét hơn, với
những hiệu ứng biến đổi màu sắc, hiệu ứng khung ảnh, làm cho bức ảnh trở nên
khác biệt. Và họ cần một ứng dụng khác biệt có thể thay thế ứng dụng mặc định
mà hệ điều hành cung cấp có thể tùy chỉnh bức ảnh sau khi chụp theo sở thích
của mỗi người.
Bởi vậy trước nhu cầu và lợi thế đó, em quyết định nghiên cứu và xây
dựng ứng dụng: “Xây dựng ứng dụng hiệu chỉnh hình ảnh trên điện thoại di
4


động” Ứng dụng có thể cho phép mọi người chỉnh sửa các hiệu ứng, biển đổi
tăng sáng tối cho bức ảnh, có thể tạo style. Bên cạnh đó sau khi xử lý ảnh xong,
người dùng có thể chia sẻ lên mạng xã hội, tạo wallpaper cho điện thoại của
mình. Vì nhiều lý do cho nên ứng dụng của em hiện chỉ chạy được trên hệ điều
hành Android.
2.

Bố cục
Nội dung báo cáo gồm các phần chính sau đây:
Chương 1: Giới thiệu tổng quan
Chương 2: Cơ sở lý thuyết
Chương 3: Demo ứng dụng
Trong q trình xây dựng đề tài khơng thể tránh được những thiếu sót, em

mong được những ý kiến đóng góp, phê bình của các thầy, cơ để bài của em
được hồn thiện hơn. Sự phê bình, góp ý của quý thầy cô sẽ là nhưng bài học

kinh nhiệm quý báu cho công việc thực tế của em sau này.
Em xin trân thành cảm ơn!

5


Chương 1
1.

GIỚI THIỆU TỔNG QUAN

Tổng quan về chỉnh sửa ảnh
Hình ảnh Raster được lưu trữ trong máy tính dưới dạng lưới các phần tử

hình ảnh hoặc pixel . Các pixel này chứa thông tin về màu sắc và độ sáng của
hình ảnh. Người chỉnh sửa hình ảnh có thể thay đổi các pixel để nâng cao hình
ảnh theo nhiều cách. Các pixel có thể được thay đổi thành một nhóm hoặc riêng
lẻ bằng các thuật tốn phức tạp trong trình chỉnh sửa hình ảnh. Bài viết này chủ
yếu đề cập đến các trình chỉnh sửa đồ họa bitmap , thường được sử dụng để thay
đổi ảnh và các đồ họa raster khác. Tuy nhiên, phần mềm đồ họa vector , chẳng
hạn như Adobe Illustrator , CorelDRAW , Xara Designer Pro hoặc Inkscape,
được sử dụng để tạo và sửa đổi hình ảnh vectơ, được lưu trữ dưới dạng mô tả
đường thẳng , đường cong Bézier và văn bản thay vì pixel. Nó là dễ dàng hơn để
rasterize một hình ảnh vector hơn để vectorize một hình ảnh raster; làm thế nào
để vectơ hóa một hình ảnh raster là trọng tâm của nhiều nghiên cứu trong lĩnh
vực thị giác máy tính . Hình ảnh vectơ có thể được sửa đổi dễ dàng hơn vì chúng
chứa mơ tả về các hình dạng để dễ dàng sắp xếp lại. Chúng cũng có thể mở
rộng, có thể phân loại ở bất kỳ độ phân giải nào .
2.


Các tính năng của trình chỉnh sửa ảnh
2.1 .

Lớp: Một tính năng khác phổ biến đối với nhiều ứng dụng đồ họa

là các Lớp , tương tự như các tấm axetat trong suốt (mỗi lớp chứa các phần tử
riêng biệt tạo nên một bức tranh kết hợp), được xếp chồng lên nhau, mỗi lớp có
khả năng được định vị, thay đổi và pha trộn riêng lẻ với các lớp bên dưới, mà
không ảnh hưởng đến bất kỳ phần tử nào trên các lớp khác. Đây là quy trình làm
việc cơ bản đã trở thành tiêu chuẩn cho phần lớn các chương trình trên thị
trường hiện nay, và mang lại sự linh hoạt tối đa cho người dùng trong khi vẫn
duy trì các ngun tắc chỉnh sửa khơng phá hủy và dễ sử dụng.

6


2.2.

Thay đổi kích thước hình ảnh: Trình chỉnh sửa hình ảnh có thể

thay đổi kích thước hình ảnh trong một quá trình thường được gọi là chia tỷ lệ
hình ảnh , làm cho chúng lớn hơn hoặc nhỏ hơn. Cao độ phân giải hình ảnh
camera có thể tạo ra hình ảnh lớn thường được giảm kích thước cho Internet sử
dụng. Các chương trình chỉnh sửa hình ảnh sử dụng một quy trình tốn học được
gọi là lấy mẫu lại để tính tốn các giá trị pixel mới có khoảng cách lớn hơn hoặc
nhỏ hơn giá trị pixel ban đầu. Hình ảnh để sử dụng Internet được giữ ở mức nhỏ,
chẳng hạn 640 x 480 pixel tương đương 0,3 megapixel.
2.3.

Cắt hình ảnh: Các trình chỉnh sửa kỹ thuật số được sử dụng để cắt


hình ảnh . Cắt tạo ra một hình ảnh mới bằng cách chọn một phần hình chữ nhật
mong muốn từ hình ảnh đang được cắt. Phần khơng mong muốn của hình ảnh bị
loại bỏ. Cắt ảnh khơng làm giảm độ phân giải của vùng được cắt. Kết quả tốt
nhất thu được khi hình ảnh gốc có độ phân giải cao. Lý do chính cho việc cắt
xén là để cải thiện bố cục hình ảnh trong hình ảnh mới.

Trước

Sau

2.4. Thay đổi độ tương phản và độ sáng: Các trình chỉnh sửa hình ảnh
có các quy định để thay đổi đồng thời độ tương phản của hình ảnh và làm sáng
hoặc tối hình ảnh. Hình ảnh thiếu sáng thường có thể được cải thiện bằng cách
sử dụng tính năng này. Những tiến bộ gần đây đã cho phép hiệu chỉnh độ phơi
sáng thơng minh hơn, theo đó chỉ những điểm ảnh dưới ngưỡng độ sáng cụ thể
7


mới được làm sáng, do đó làm sáng những vùng bóng thiếu sáng mà khơng ảnh
hưởng đến phần cịn lại của hình ảnh. Sự chuyển đổi chính xác được áp dụng
cho từng kênh màu có thể khác nhau giữa các trình biên tập. GIMP áp dụng
cơng thức sau:
3. if
1,0

( độ sáng
+

<


0,0 )

giá trị

=

giá trị

*

(

độ sáng );

4.

giá trị khác

= giá trị + (( 1 -

giá trị ) * độ sáng ); giá trị = ( giá trị - 0,5 )
* ( tan (( độ tương phản + 1 ) * PI / 4 ) ) + 0,5 ;
trong đó giá trị là giá trị màu đầu vào trong phạm vi 0..1 và độ
sáng và độ tương phản nằm trong phạm vi −1..1.
3.

Các công cụ.
3.1. Android Studio.
Android Studio là môi trường phát triển tích hợp (IDE) chính thức[1]


dành cho phát triển nền tảng Android.
Nó được ra mắt vào ngày 16 tháng 5 năm 2013 tại hội nghị Google I/O.
Android Studio được phát hành miễn phí theo giấy phép Apache Licence 2.0.[2]
Android Studio ở giai đoạn truy cập xem trước sớm bắt đầu từ phiên bản
0.1 vào tháng 5.2013, sau đó bước vào giai đoạn beta từ phiên bản 0.8 được phát
hành vào tháng 6 năm 2014.[3] Phiên bản ổn định đầu tiên được ra mắt vào
tháng 12 năm 2014, bắt đầu từ phiên bản 1.0.[4
Dựa trên phần mềm IntelliJ IDEA của JetBrains, Android Studio được
thiết kế đặc biệt để phát triển ứng dụng Android.[5] Nó hỗ trợ các hệ điều hành
Windows, Mac OS X và Linux,[6][7] và là IDE chính thức của Google để phát
triển ứng dụng Android gốc để thay thế cho Android Development Tools (ADT)
dựa trên Eclipse

8


4.

Thư viện OpenCV
OpenCV (Open Computer Vision library) do Intel phát triển, được giới

thiệu năm 1999 và hoàn thiện thành phiên bản 1.0 năm 2006. Thư viện OpenCV
– gồm khoảng 500 hàm – được viết bằng ngơn ngữ lập trình C và tương thích
với các hệ điều hành Windows, Linux, Mac OS… đóng vai trị xác lập chuẩn
giao tiếp, dữ liệu, thuật tốn cho lính vực CV và tọa điều kiện cho mọi người
tham gia nghiên cứu và phát triển ứng dụng
Trước OpenCV khơng có một cơng cụ chuẩn nào cho lĩnh vực xử lí ảnh.
Các đoạn code đơn lẻ do các nhà nghiên cứu tự viết thường không thống nhất và
không ổn định. Các bộ công cụ thương mại như Matlab, Simulink,..v.v.. lại có

giá cao chỉ thích hợp cho các cơng ty phát triển các ứng dụng lớn. Ngồi ra cịn
có các giải phảp kèm theo thiết bị phần cứng mà phần lớn là mã đóng và được
thiết kế riêng cho tứng thiết bị, rất khó khan cho việc mở rộng ứng dụng.
OpenCV là cơng cụ hữu ích cho những người bước đầu làm quen với xử lí
ảnh số vì các ưu điểm sau:
- OpenCV là công cụ chuyên dụng: được Intel phát triển theo hướng tối
ưu hóa cho các ứng dụng xử lí và phân tích ảnh, với cấu trúc dữ liệu hợp lí, thư
viện tạo giao diện, truy xuất thiết bị phần cứng được tích hợp sẵn. OpenCV thích
hợp để phát triển nhanh ứng dụng
- OpenCV là cơng cụ mã nguồn mở: Không chỉ là công cụ miễn phí, việc
được xây dựng trên mã nguốn mở giúp OpenCV trở thành cơng cụ thích hợp cho
nghiên cứu và phát triển, với khả năng thay đổi và mở rộng các mơ hình, thuật
tốn
- OpenCV đã được sử dụng rộng rãi: Từ năm 1999 đến nay, OpenCV đã

thu hút được một lượng lớn người dung, trong đó có các cơng ty lớn như
Microsoft, IBM, Sony, Siemens, Google và các nhóm nghiên cứu ở Standford,
MIT, CMU, Cambridge,… Nhiều forum hỗ trợ và cộng đồng người dung đã
được thành lập, tạo nên kênh thơng tin rộng lớn, hữu ích cho việc tham khảo, tra
cứu.
9


Chương 2
1.

CƠ SỞ LÝ THUYẾT

Một chút căn bản về ảnh kỹ thuật số (digital image)
Một hình ảnh (kỹ thuật số) được tạo thành bởi nhiều phần tử gọi là pixel


(hay điểm ảnh). Thường thì một hình được biểu diễn bằng một mảng hai chiều
gồm nhiều pixels. Mỗi pixel (cụ thể là hình RGB) mang trong mình 3 thơng số
màu: Red, Green, Blue.

Ngồi ra, đối với khơng gian RGBA thì nó có một kênh thứ 4 là Alpha,
trong đó Alpha là một thơng số chỉ độ trong suốt của pixel đó.

10


Như đã nói ở trên, một pixel mang 3 giá trị màu, vì trên thực tế mỗi pixel
được cấu thành bao gồm 3 sub-pixels. Và pixel cũng khơng có kích thước vật lý
cụ thể, mà nó phụ thuộc vào pixel density. Mỗi pixel chứa được 256 (0-255) giá
trị, cho nên về mặt lý thuyết 3 sub-pixels hiện thị được 256^3 = 16777216 (~16
triệu màu). Nhưng tất nhiên là mắt người chưa hẳn đã phân biệt được 16 triệu
màu này.
2.

Xử lý ảnh.

3.

Chuyển ảnh màu sang grayscale
Về cơ bản thì grayscale (hình trắng đen) là loại ảnh mà tất cả pixels chỉ

mang thơng tin về độ sáng, hay nói cách khác chỉ thể hiện các sắc thái của màu
xám (Luminance mode). Trong khơng gian màu RGB, thì màu xám là màu mà
các sắc tố Red, Green, Blue có giá trị bằng nhau. Ví dụ màu đỏ là rgb(255, 0, 0)
thì nếu ta muốn chuyển nó sang xám thì lấy giá trị trung bình của 3 sub-pixels

và tạo thành 1 pixel mới rgb(85, 85, 85)

Trước
4.

Sau

Thay đổi độ tương phản (contrast)

11


2. from PIL import Image, ImageEnhance
3. # PIL accesses images in Cartesian co-ordinates, so it is
Image[columns, rows]
4. img = Image.open("rick-morty.png")
5.
6. # Enhance constrast
7. enhancer = ImageEnhance.Contrast(img)
8. for i in range(1, 8):
factor = i / 4.0

9.
10.

new_img = enhancer.enhance(factor)

11.

new_img.show()


12.

# Or save it to file

13.

# new_img.save('rick-morty-%s.png' % i)

Trong đó thì factor là một giá trị để kiểm soát độ tương phản, 1.0 là tương
đương hình gốc, cịn thấp hơn 1.0 là giảm độ tương phản.

Tăng/giảm contrast

là làm tối (darkening) nhưng pixel có giá trị dưới một mức nào đó, và làm sáng
(lightening) những pixels có giá trị trên một mức nào đó. Độ chênh lệch này sẽ
làm tăng hay giảm sự tương phản.

2.3. Thay đổi độ sáng (brightness)

Để thay đổi độ sáng của ảnh bằng Pillow cũng rất đơn giản, ta làm như sau:
12


from PIL import Image, ImageEnhance
img = Image.open("rick-morty.png")
enhancer = ImageEnhance.Brightness(img)
# Lighter
new_img = enhancer.enhance(1.8)
# Darker

# new_img = enhancer.enhance(0.8)
new_img.show()
Để thay đổi độ sáng của pixels bằng cách thủ công cũng khá đơn giản, ta
chỉ cần tăng hay giảm giá trị của từng pixel là được, chỉ cần lưu ý truncate giá trị
đó sao cho nó nằm trong khoảng 0-255 là được.
from PIL import Image
def truncate(value):
if (value < 0):
return 0
if (value > 255):
return 255
return value
if __name__ == "__main__":
img = Image.open('rick-morty.png')
pixels = img.load()
img_new = Image.new(img.mode, img.size)
pixels_new = img_new.load()
brightness = 20
for i in range(img_new.size[0]):
13


for j in range(img_new.size[1]):
r, b, g = pixels[i,j]
_r = truncate(r + brightness)
_b = truncate(b + brightness)
_g = truncate(g + brightness)
pixels_new[i,j] = (_r, _b, _g, 255)
img_new.show()


14


Chương 3

DEMO ỨNG DỤNG

Các hình ảnh của ứng dụng.

Hình 3.1 Điều chỉnh hiệu ứng

Hình 3.2 Cắt hình ảnh

15


Hình 3.3 Điều chỉnh độ tương phản

Hình 3.4 ĐIều chỉnh độ sáng

16


Hình 3.5 Xoay, lật hình

17


KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN
1.Kết Luận

Bên trên là báo cáo về đề tài ứng dụng hiệu chỉnh hình ảnh. Đề tài này
cần được phát triển hơn nữa trong tương lai vì đây có thể coi là một ứng dụng
phổ biến trong người dùng. Tuy nhiên ứng dụng còn rất nhiều thiếu sót:
- Điều chỉnh ánh sáng cũng như độ tương phản cịn chưa được chính xác.
- Một số hiệu ứng chỉ mang tính khách quan.
2.Hướng phát triển
Một số chức năng có thể mở rộng cũng như thực hiện sau này:
- Chức năng xóa vật thể: Chức năng này cho phéo người dùng xóa đi
những vật thể khơng mong muốn ở trong tấm ảnh của mình.
- Chức năng ghép hình ảnh: Chức năng cho phép lồng, ghép các tấm
hình lại với nhau…

18


DANH MỤC TÀI LIỆU THAM KHẢO

1.
2.
3.

19



×