- File
+ Load (Mở ảnh): Chƣơng trình cho phép duyệt các thƣ mục trong hệ
thống của PPC. Có thể là bộ nhớ trong hay thẻ nhớ ngoài (Storage Card) của thiết bị. Sau khi lựa chọn kiểu ảnh sẽ đƣợc hiển thị (*.jpg,*.bmp…hay tất cả các định dạng ảnh mà .NET hỗ trợ). Danh sách các files ảnh sẽ xuất hiện trong một khung danh sách. Ta có thể chọn file ảnh cần xem và xử lý ở hộp thoại này
+ Save As: Sau khi thực hiện các thao tác chỉnh sửa trên ảnh. Chức năng Save As sẽ lƣu lại ảnh đã đƣợc xử lý vào bộ nhớ.
+ Exit : Chức năng giúp thoát chƣơng trình. Khi chọn chức năng này mà ảnh đã đƣợc xử lý nhƣng chƣa đƣợc lƣu thì chƣơng trình sẽ hiển thị thông báo nhắc nhở ngƣời dùng có lƣu lại sự thay đổi này không rồi thoát. Nếu ảnh chƣa xử lý chƣơng trình sẽ tự động thoát luôn.
- View :
+ Zoom In: Thực hiện phóng to ảnh các kích cỡ chiều rộng và chiều dài
cộng tƣơng ứng 20 pixel.
+ Zoom Out: Thực hiện việc thu nhỏ ảnh các kích cỡ chiều rộng và chiều dài trừ tƣơng ứng 20 pixel.
+ 50%,100%,200%,300%: Phóng to ảnh bằng 50%, 100%%,200%, 300% ảnh ban đầu.
+ ViewScreen: Cho phép xem ảnh toàn màn hình với kích thƣớc đƣợc co lại, hoặc phóng to nếu ảnh nhỏ với tỉ lệ tƣơng ứng ảnh thật và đƣợc hiển thị đầy trên màn hình của thiết bị
+ ImgInfo(Image Infomation): Hiển thị thông tin về ảnh(vùng nhớ lƣu trữ, kích thƣớc ảnh, dung lƣợng, ngày giờ tạo file ảnh)
+ Realsize: Kích thƣớc thật của ảnh theo chiều rộng và dài
Edit
+ ActualImg: Sau khi thực hiện các thao tác xử lý ảnh nhấn chức năng
này ảnh sẽ trở ảnh ban đầu nhƣ khi mới bắt đầu thực hiện thao tác Load
+ Undo: Đƣa ảnh trở về trạng trƣớc khi thực hiện một thao tác nào đó
+ Repeat: Đƣa ảnh trở về nhƣ trƣớc khi thực hiện Undo
- Effect 1
+ Brightness: Công cụ chỉnh sửa cho phép tăng hoặc giảm độ sáng của ảnh. Với Brightness chúng ta có thể làm sáng lên các ảnh tối bằng cách cộng thêm các giá trị nguyên vào các pixel, hoặc làm tối đi các ảnh sáng bằng cách
Thuật toán :
R(20) G(30) B(250)
Pixel gốc của ảnh Pixel sau hiệu ứng (+10) If (Brightness = True) Then // làm ảnh sáng lên
NewValue = OldValue + AddValue; //AddValue [-255..255] Else NewValue = OldValue - AddValue; // làm ảnh tối đi If (NewValue < 0) Then NewValue = 0;
If (NewValue > 255) Then NewValue = 255; Ảnh kết quả khi tăng độ sáng:
Hình a.Ảnh gốc b.Ảnh kết quả
+ Contrast: Chức năng chỉnh sửa làm tăng hoặc giảm độ tƣơng phản của ảnh. Thuật toán đƣợc miêu tả nhƣ sau :
NewValue=OldValue/255; // Biến đổi đến 1 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;
Ảnh kết quả khi tăng độ tƣơng phản:
Ảnh gốc Ảnh kết quả
+ RGB : Thực hiện tăng giảm giá trị cho mỗi thành phần màu riêng biệt. Ví dụ R =R-20, G=G+220, B = B-150. Pixel gốc Pixel RGB Kết quả ảnh thực hiện Ảnh gốc Ảnh RGB R(0) G(250) B(100 R(20) G(30) B(250)
+ Rotate: Chức năng quay ảnh (trái, phải, quay theo góc bất kì…)
Thuật toán: Một ảnh đƣợc xem nhƣ là một mảng hai chiều, quay ảnh là sắp xếp lại mảng này. i Chiều rộng Chiều cao 0 2 3 1 0 1 2 3 4 5 Quay trái :
Ảnh ban đầu có kích thƣớc: rộng n cao m (n * m). Tạo một ảnh mới Temp có kích thƣớc rộng m cao n (m * n)
Ảnh gốc Ảnh quay trái
Quay phải :
Ảnh ban đầu có kích thƣớc: rộng n cao m (n * m). Tạo một ảnh mới Temp có kích thƣớc rộng m cao n (m * n)
Ảnh gốc Ảnh quay phải
+ Angle : Quay theo góc bất kì. Khi quay thì sự chia thang giữ nguyên chỉ có hƣớng trục thay đổi. Còn trụ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 tính theo theo công thức
x’ = xcosθ + y.sinθ y’ = -x.sinθ + y.cosθ
Một bức ảnh có kích thƣớc I[W*H]. Khi quay một góc θ thì kích thƣớc mới sẽ đƣợc tính nhƣ sau
W_moi= H_cu * |Sin(θ)| + W_cu *| Cos(θ)|; H_moi = W_cu * |Sin(θ)| + H_cu * |Cos(θ)|;
Khi đó ảnh quay sẽ có kích thƣớc I(W_moi , H_moi) nhƣ hình chữ nhật trên. Tọa độ 4 góc của ảnh cũ lần lƣợt là
(x1,y1) = (0,0) ; (x2,y2) = (w,0) ; (x3,y3) = (w,h) ; (x4,y4) = (0,h) ;
x1(0,0) x4(0,h) x3(w,h) x2(w,0) W X4 X3 X2 X1 X1 X4 X3 X2 Ảnh quay Ảnh quay sau khi tinh tiến Ảnh gốc
Ví dụ khi quay ảnh một góc 30 độ. Thì tọa độ 4 đỉnh mới theo công thức khi quay ở trên lần lƣợt là:
(X1,Y1)= x1*cos30 + y1*sin30 , -x1*sin30+y1*cos 30 (X2,Y2)= x2*cos30+y2*sin30 , -x2*sin30+y2*cos30 (X3,Y3)=x3*cos30+y3*sin30 , -x3*sin30 + y3*cos30 (X4,Y4)=x4*cos30+y4*sin30 , -x4sin30 + y4*cos30
Sau đó ta tìm giá trị Min(X1,X2,X3,X4), Min(Y1,Y2,Y3,Y4) rồi tịnh tiến toàn bộ các điểm ảnh theo hai giá trị này.
Kết quả thực hiện:
Ảnh gốc Ảnh quay
+ Mirorr Hozi: Hiệu ứng gƣơng theo chiều dọc
Thuật toán:
Ảnh ban đầu có kích thƣớc: rộng n cao m (n * m). Tạo một ảnh mới Temp có cùng kích thƣớc rộng n cao n (n * m)
Ảnh kết quả :
+ Mirorr Verti: Hiệu ứng gƣơng - ngang
Thuật toán:
Ảnh ban đầu có kích thƣớc: rộng n cao m (n * m). Tạo một ảnh mới Temp có cùng kích thƣớc rộng n cao n (n * m) Ảnh kết quả : Ảnh gốc Ảnh kết quả
+ Fillter: Bộ lọc riên các ảnh R,G,B và chuyển ảnh màu thành ảnh xám. - Gray: Chuyển ảnh màu sang ảnh xám (ảnh đen trắng)
Công thức chuyển một Pixel màu về giá trị xám nhƣ sau K = (298*R +586*G +114*B)/1000 Thuật toán: R(231) G(50) B(69) Pixel gốc Pixel xám R106) G(106) B106)
Ảnh kết quả thực hiện đƣợc:
Ảnh gốc Ảnh xám - Red: Các ảnh chỉ có màu Red thực hiện nhƣ sau
R(231) G(50) B(69)
Pixel màu Pixel chỉ có màu đỏ Ảnh kết quả thực hiện:
Ảnh gốc Ảnh Red
- Green: Các ảnh chỉ có màu Green thực hiện nhƣ sau
R(231) G(50) B(69)
Pixel gốc Pixel chỉ có màu G Ảnh thực hiện:
Ảnh gốc Ảnh Green
- Blue: Các ảnh chỉ có màu Blue thực hiện nhƣ sau
R(231) G(50) B(69)
Pixel gốc Pixel màu Blue Ảnh thực hiên:
R(0) G(50) B(0)
- Effect 2
+ Median (Lọc trung vị):
Nhƣ đã trình bày ở trên lọc trung vị có tác dụng giảm nhiễu rất đáng kể Thuật toán: Ví dụ một ảnh 0 0 0 0 0 0 0 0 4 7 2 7 1 0 0 5 7 1 7 1 0 0 6 6 1 8 3 0 0 5 7 5 7 1 0 0 5 7 6 1 2 0 0 0 0 0 0 0 0
Tại điểm (1,1) có các lân cận 0 , 0 , 0 , 0 , 4 , 7 , 0 , 5 , 7 (Không lọc biên) Sắp xếp lại theo thứ tự tăng dần ta đƣợc :
0, 0, 0, 0, 0, 4, 5 , 7 , 7 // Giá trị Median đƣợc xác định là 0 sẽ thay thế vào pixel(1,1). Giá trị mới Pixel(1,1)=0.
Ảnh kết quả thực hiện:
Ảnh gốc Ảnh lọc Median
+ PseudoMedian (Lọc giả trung vị)
Thuật toán tƣơng tự nhƣ lọc trung vị chỉ khác là các điểm lân cận không cần sắp xếp lại. Giá trị mới đƣợc thiết lập sẽ bằng [Min(dãy) + Max(dãy)]/2
Ảnh thực hiện
Ảnh gốc Ảnh PsedoMedian
+ Invert: Chuyển từ ảnh màu thành ảnh âm bản (ảnh phim)
R(231) G(50) B(69)
Pixel màu gốc Pixel kết quả Kết quả ảnh thực hiện
Ảnh gốc Ảnh Invert
+ Sharpen: Chức năng làm đậm. Ma trận nhân chập nhƣ sau:
0 -1 0
-1 5 -1
0 -1 0
Divisor: 1 Offset: 0
Ảnh kết quả thực hiện:
Ảnh gốc Ảnh Sharpen
+ Blur: Chức năng làm trơn, nhẵn ảnh. Sử dụng ma trận nhân chập nhƣ sau: 1 1 1 1 1 1 1 1 1 Divisor: 9Offset: 0 Ảnh kết quả thực hiện: Ảnh gốc Ảnh Blur
+ Emboss: Chức năng chạm nổi ảnh. Sử dụng ma trận nhân chập nhƣ sau:
0 0 0
0 1 0
0 0 -1
Ảnh kết quả:
Ảnh gốc Ảnh Emboss
+ EdgeDetect : Làm nổi biên ảnh
0 1 0 1 -4 1 0 1 0 Kết quả thực hiện: Ảnh gốc Ảnh Edge - Help:
+ About App: Form chứa thông tin về sản phẩm ( tác giả, ngày viết…)
KẾT LUẬN
Cùng với sự phát triển của thiết bị di động, càng có nhiều ảnh đƣợc chụp từ chính thiết bị hoặc lƣu trữ trên đó. Tuy nhiên thiết bị cầm tay ảnh chụp không đƣợc nhƣ ảnh số trên các máy ảnh chuyên nghiệp, việc xử lý và tạo hiệu ứng
càng trở nên cần thiết. Kết quả đề tài “ Xây dựng chương trình xem ảnh, xử
lý và tạo hiệu ứng ảnh trên thiết bị cầm tay sử dụng hệ điều hành Windows Mobile” đã đáp ứng đƣợc những yêu cầu cơ bản và cần thiết trong quá trình xem ảnh và xử lý. Tuy nhiên do mỗi hiệu ứng ảnh đều có thuật toán phức tạp, ảnh thƣờng có dung lƣợng lớn, thiết bị cầm tay tốc độ xử lý còn chậm do đó thời gian chạy mỗi hiệu ứng là tƣơng đối lâu. Hƣớng phát triển của đề tài trong thời gian tới là thực hiện thêm các hiệu ứng, cải tiến các thuật toán nhằm giảm thời gian xử lý. Thiết kế thêm phần xem ảnh chuyên nghiệp nhƣ trên Windows có thể xem nhiều file cùng lúc mỗi file là một cửa sổ nhỏ, tất cả nằm trong một cửa sổ lớn. Thiết kế giao diện cho chƣơng trình đẹp hơn hoàn thành các phần còn thiếu sót và hạn chế.
Cuối cùng một lần nữa em xin chân thành cảm ơn các thầy cô trong khoa Công nghệ thông tin, các bạn sinh viên trong khoa và đặc biệt gửi lời cảm ơn sâu sắc đến thầy Lê Trí Thành đã giúp đỡ em rất nhiều trong thời gian làm đồ án tốt nghiệp vừa qua.
Hải Phòng tháng 10 năm 2008
TÀI LIỆU THAM KHẢO
[1]. Ngô Diên Tập, Xử lý ảnh bằng máy tính, 1997.
[2]. Nguyễn Thanh Thuỷ - Lƣơng Mạnh Bá, Nh p môn xử lý ảnh số, NXB
Khoa học và Kỹ thuật, 1999.
[3]. Nguyễn Kim Sách, Xử lý ảnh và video số, 1997.
[4]. James.P.Parker, Algorithms for image processing and computer vision,
Wiley Computer Publishing, 1997.