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

Đồ án Xử lý ảnh Biến đổi ảnh với phương pháp Image Distortion

21 785 4

Đ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

Định dạng
Số trang 21
Dung lượng 777 KB

Nội dung

Thông tin được dưới 3 dạng chủ yếu là: âm thanh, văn bản và hình ảnh. Do vậy, xử lý ảnh là một trong những lĩnh vực quan trọng của ngành công nghệ thông tin. Mặc dù, đây là một lĩnh vực khó. Tuy nhiên, ngày nay, nó đang ngày càng trở nên quan trọng trong hệ thống các lĩnh vực phát triển công nghệ thông tin, ứng dụng vào để giải quyết các bài toán phục vụ nhu cầu con người. Sau thời gian học tập tại khoa Công Nghệ Thông Tin, nhóm chúng em đã lựa chọn đề tài Biến đổi ảnh với phương pháp Image Distortion với mong muốn vận dụng những kiến thức mình đã học, xây dựng được một trang web có tính thực tiễn, đồng thời mỗi thành viên trong nhóm củng cố lại những kiến thức của mình qua thực hành. Chúng em xin chân thành cảm ơn các thầy giáo Nguyễn Hữu Quỳnh và thầy Cù Việt Dũng, giảng viên bộ môn “Xử lý ảnh” đã tận tình giảng dạy chúng em trong suốt thời gian học tập vừa qua để giúp chúng em hoàn thiện đề tài này. Chúng em xin chân thành cảm ơn thầy.

Trang 1

TRƯỜNG ĐẠI HỌC ĐIỆN LỰC

KHOA CÔNG NGHỆ THÔNG TIN

BÁO CÁO ĐỒ ÁN MÔN HỌC

XỬ LÝ ẢNH

Đề tài: Biến đổi ảnh với phương pháp Image Distortion

Sinh viên thực hiện:

Nguyễn Hoài Sơn, D6CNTT Nguyễn Thị Kiều Trang, D6CNTT Nguyễn Tuấn Đạt, D6CNTT

Giáo viên hướng dẫn:

TS NGUYỄN HỮU QUỲNH

Trang 2

TRƯỜNG ĐẠI HỌC ĐIỆN LỰC

KHOA CÔNG NGHỆ THÔNG TIN

BÁO CÁO ĐỒ ÁN MÔN HỌC

XỬ LÝ ẢNH

Đề tài: Biến đổi ảnh với phương pháp Image Distortion

Sinh viên thực hiện:

Nguyễn Hoài Sơn, D6CNTT Nguyễn Thị Kiều Trang, D6CNTT Nguyễn Tuấn Đạt, D6CNTT

Giáo viên hướng dẫn:

TS NGUYỄN HỮU QUỲNH

Trang 3

HÀ NỘI, THÁNG 1-2015

Trang 4

LỜI NÓI ĐẦU

Thông tin được dưới 3 dạng chủ yếu là: âm thanh, văn bản và hình ảnh Dovậy, xử lý ảnh là một trong những lĩnh vực quan trọng của ngành công nghệ thông tin.Mặc dù, đây là một lĩnh vực khó Tuy nhiên, ngày nay, nó đang ngày càng trở nênquan trọng trong hệ thống các lĩnh vực phát triển công nghệ thông tin, ứng dụng vào

để giải quyết các bài toán phục vụ nhu cầu con người

Sau thời gian học tập tại khoa Công Nghệ Thông Tin, nhóm chúng em đã lựa

chọn đề tài Biến đổi ảnh với phương pháp Image Distortion với mong muốn vận

dụng những kiến thức mình đã học, xây dựng được một trang web có tính thực tiễn,đồng thời mỗi thành viên trong nhóm củng cố lại những kiến thức của mình qua thựchành

Chúng em xin chân thành cảm ơn các thầy giáo Nguyễn Hữu Quỳnh và thầy

Cù Việt Dũng, giảng viên bộ môn “Xử lý ảnh” đã tận tình giảng dạy chúng em trong

suốt thời gian học tập vừa qua để giúp chúng em hoàn thiện đề tài này

Chúng em xin chân thành cảm ơn thầy

Hà Nội, ngày 5 tháng 1 năm 2014

Nguyễn Hoài Sơn Nguyễn Thị Kiều Trang Nguyễn Tuấn Đạt

Trang 5

MỤC LỤC

CHƯƠNG 1: CÁC KHÁI NIỆM TỔNG QUÁT 1

1.1 Xử lý ảnh 1

1.2 Ảnh BMP 1

1.3 Thư viện đồ họa GDI++ trong C# 2

CHƯƠNG 2: BIẾN ĐỔI ẢNH 3

2.1 Phương pháp biến đổi ảnh 3

2.2 Mục đích của việc biến đổi hình ảnh 3

CHƯƠNG 3: PHƯƠNG PHÁP 4-POINTS IMAGE DISTORTION 4

3.1 Ý tưởng thuật toán 4

3.2 Triển khai thuật toán 4

CHƯƠNG 4: GIAO DIỆN CHƯƠNG TRÌNH 13

4.1 Giao diện khi mở ảnh 13

4.2 Giao diện khi chỉnh sửa ảnh 13

CHƯƠNG 5: KẾT QUẢ VÀ HƯỚNG PHÁT TRIỂN 14

5.1 Kết quả 14

5.2 Hướng phát triển 14

TÀI LIỆU THAM KHẢO 15

NHẬN XÉT, ĐÁNH GIÁ CỦA GIÁO VIÊN 16

Trang 6

CHƯƠNG 1: CÁC KHÁI NIỆM TỔNG QUÁT

Ch ương 1 ng 1. Xử lý ảnh

Xử lý ảnh là một ngành khoa học mới mẻ so với các ngành khoa học khác Hiện nay, nó đang là một học đang được quan tâm và đang giảng dạy cho sinh viên ngành công nghệ thông tin

Nhờ có công nghệ số hóa hiện đại, ngày nay con người có thể xử lý tín hiệu nhiều chiều thông qua nhiều hệ thống khác nhau Từ những mạch số đơn giản cho đến những máy tính song song cao cấp Mục tiêu của xử lý ảnh có thể chia làm 3 hướng như sau:

- Xử lý ảnh mới ban đầu để thu được một ảnh mới theo tiêu chí xác định (ví dụ, ảnh ban đầu mờ, xử lý để làm ảnh rõ nét hơn)

- Phân tích ảnh để thu được các thông tin đặc trưng, giúp cho việc phân loại ảnh, nhận biết ảnh

- Hiểu ảnh đầu vào để có thể mô tả ảnh ở mức cao hơn, sâu hơn Ví dụ, từ ảnh chụp một vụ tai nạn giao thông có thể phác thảo ra hiện trường tai nạn đó

1.1. Ảnh BMP

Trong đồ họa máy vi tính, BMP, còn được biết đến với tên tiếng

Anh khác là Windows bitmap, là một định dạng tập tin hình ảnh khá phổ biến.

Các tập tin đồ họa lưu dưới dạng BMP thường có đuôi

là BMP hoặc DIB (Device Independent Bitmap).

Các thuộc tính tiêu biểu của một tập tin ảnh BMP (cũng như file ảnh nói chung) là:

- Số bit trên mỗi điểm ảnh (bit per pixel), thường được ký hiệu bởi n Một

ảnh BMP n-bit có màu Giá trị n càng lớn thì ảnh càng có nhiều màu,

và càng rõ nét hơn Giá trị tiêu biểu của n là 1 (ảnh đen trắng), 4 (ảnh 16 màu), 8 (ảnh 256 màu), 16 (ảnh 65536 màu) và 24 (ảnh 16 triệu màu) Ảnh BMP 24-bit có chất lượng hình ảnh trung thực nhất.

- Chiều cao của ảnh (height), cho bởi điểm ảnh (pixel).

Trang 7

- Chiều rộng của ảnh (width), cho bởi điểm ảnh.

Cấu trúc tập tin ảnh BMP bao gồm 4 phần

- Bitmap Header (14 bytes): giúp nhận dạng tập tin bitmap.

- Bitmap Information (40 bytes): lưu một số thông tin chi tiết giúp hiển

thị ảnh.

- Color Palette (4*x bytes), x là số màu của ảnh: định nghĩa các màu sẽ

được sử dụng trong ảnh.

- Bitmap Data: lưu dữ liệu ảnh.

Đặc điểm nổi bật nhất của định dạng BMP là tập tin hình ảnh thường không được nén bằng bất kỳ thuật toán nào Khi lưu ảnh, các điểm ảnh được ghi trực tiếp vào tập tin - một điểm ảnh sẽ được mô tả bởi một hay nhiều byte tùy

thuộc vào giá trị n của ảnh Do đó, một hình ảnh lưu dưới dạng BMP thường có

kích cỡ rất lớn, gấp nhiều lần so với các ảnh được nén (chẳng hạn GIF, JPEG hay PNG).

Định dạng BMP được hỗ trợ bởi hầu hết các phần mềm đồ họa chạy

trên Windows, và cả một số ứng dụng chạy trên MS-DOS Ngay từ Windows

3.1, Microsoft đã cho ra đời phần mềm PaintBrush, một phần mềm hỗ trợ vẽ

hình ảnh đơn giản và lưu hình ảnh được vẽ dưới dạng BMP 16 hay 256 màu Tuy nhiên, do kích thước tập tin ảnh BMP quá lớn, định dạng BMP không phù hợp để trao đổi hình ảnh qua mạng Internet (do hạn chế về tốc độ truyền dữ liệu) Do đó, các trang web thường sử dụng ảnh dạng GIF, JPEG hay PNG Các định dạng này hỗ trợ các thuật toán nén hình ảnh, vì vậy có thể giảm bớt kích cỡ của ảnh.

Ch ương 1 ng 2. Thư viện đồ họa GDI++ trong C#

GDI là thư viện cung cấp các hàm (funtions) và các cấu trúc dữ liệu (structures) cần thiết để ứng dụng tạo ra những kết xuất dưới dạng đồ họa (hiển thị lên màn hình, in ra máy in…)

Các hàm GDI cho phép vẽ đường thẳng, đường cong, các hình đa giác, xuất kí tự hiển thị ảnh bitmap, in ấn…

GDI không tương tác trực tiếp với thiết bị phần cứng, mà thông qua các driver

2

Trang 8

CHƯƠNG 2: BIẾN ĐỔI ẢNH 2.1 Phương pháp biến đổi ảnh

Để xử lý ảnh đưa vào, trước tiên chúng ta cần tạo một phân vùng để xử

lý ảnh Ở đây chúng ta sử dụng một hình chữ nhật để ảnh được hiển thị vào trong nó, do kích thước của các ảnh là rất khác nhau nên hình chữ nhật khởi tạo ban đầu sau khi đưa ảnh vào sẽ có kích thước đúng bằng ảnh.

2.2 Mục đích của việc biến đổi hình ảnh

Biển đổi ảnh là một trong những vấn đề cơ bản của xử lý ảnh Ngoài việc tác động đến kích thước, hình dạng của ảnh ban đầu Việc biến đổi ảnh sẽ là tiền

đề để xây dựng các ứng dụng nâng cao, hữu ích hơn, phục vụ để giải quyết nhiều bài toán phức tạp hơn trong lĩnh vực xử lý ảnh

Một trong những ví dụ điểu hình cho việc ứng dụng của biến đổi ảnh là tính năng Free Transform và Distoration trong phần mềm đồ họa Photoshop của hang Adobe.

Một số vấn đề khác của xử lý ảnh, tùy vào từng bài toán cụ thể và mục đích của người phát triển, nếu chúng ta biết cách kết hợp chúng với nhau sẽ tạo

ra những ứng dụng giải quyết tốt được các vấn đề cần quan tâm

Trang 9

CHƯƠNG 3: PHƯƠNG PHÁP 4-POINTS IMAGE DISTORTION 3.1 Ý tưởng thuật toán

Ý tưởng thuật toán biến đổi ảnh với phương pháp làm méo ảnh bằng 4 điểm dựa trên làm méo hình ảnh ban đầu thành một hình ảnh khác bằng cách thay đổi vị trí của 4 điểm riêng biệt trên 4 góc của màn hình

Đây là một ví dụ đơn giản cho các thuật toán biến đổi hình ảnh trong lĩnh vực xử lý ảnh Điển hình cho ứng dụng này là tính năng Biến đổi ảnh – làm méo ảnh (Distoration) trong phần mềm đồ họa Photoshop của hãng Adobe

Mặc dù, trong đề tài này, ứng dụng ít tính năng hơn và tốc độ xử lý còn chậm Tuy nhiên, nó đã mô phỏng tương tự với Distoration trong Photoshop.

 Quá trình làm méo ảnh sử dụng lý thuyết toán học là lấy một điểm

từ ảnh bitmap được người dùng chọn và tìm tọa độ tương ứng của

nó sau khi người dùng di chuyển 1 trong 4 điểm góc của màn hình

 Cụ thể, đầu tiên sẽ xác đỉnh điểm giao nhau giữa 4 góc

 Sau đó, chương trình sẽ dịch chuyển ảnh, mỗi điểm ảnh sẽ được kiểm tra để tính tọa độ cho một điểm giao nhau giữa nhau giữa 4 góc

 Sau khi thực hiện các phép tính nhân, chia cần thiết với tất cả các điểm giao nhau mới sẽ được kết quả là hình ảnh mới sau khi biến đổi

3.2 Triển khai thuật toán

3.2.1 Thuật toán xử lý ảnh bitmap

RBGA viết tắt của từ Red Green Blue Alpha Đôi khi RBGA được miêu tả

như là một không gian màu, nhưng trong thực tế thì nó giống hết cách dùng của

hệ màu RGB (Red Green Blue), chỉ khác có them thông tin bổ sung là giá trị nguyên là Alpha

4

Trang 10

Alpha được Catmull và Smith tìm ra trong khoảng năm 1971 – 1972 Kênh

màu Alpha thường được sử dụng như một kênh điều chỉnh hiển thị độ rõ, mờ của ảnh Khi giá trị của alpha tối đa (100%) thì ảnh sẽ bị ẩn hoàn toàn, ngược lại khi alpha tối thiểu (0%) thì ảnh sẽ hiển thị hoàn toàn

Hình 3.1: Hệ màu RGBA

File ảnh định dạng png là một ví dụ điển hình sử dụng hệ màu RBGA.

Hàm lấy giá trị RBGA cho từng điểm ảnh (pixel)

{

public byte blue;

public byte green;

public byte red;

public byte alpha;

public override string ToString()

{

return "(" + alpha.ToString() + ", " + red.ToString() + ", " + green.ToString() + ", " +

blue.ToString() + ")";

}

}

Hàm xử lý ảnh đầu vào

Trang 11

private PixelData* pixelData = null;

public Color GetPixel(int x, int y)

{

pixelData = (PixelData*)(pBase + y * width +

return Color.FromArgb(pixelData->alpha,

pixelData->red, pixelData->green, pixelData->blue);

}

public Color GetPixelNext()

{

pixelData++;

return Color.FromArgb(pixelData->alpha,

pixelData->red, pixelData->green, pixelData->blue);

}

public void SetPixel(int x, int y, Color color) {

6

Trang 12

PixelData* data = (PixelData*)(pBase + y * width + x * sizeof(PixelData));

3.2.2 Xử lý biến đổi làm méo bằng 4 đỉnh

Hàm khai báo cấu trúc vector

{

public PointF Origin;

public float Direction;

public Vector(PointF origin, float direction)

{

this.Origin = origin;

this.Direction = direction;

}

}

Hàm biến đổi làm méo bằng 4 đỉnh

topleft, Point topright, Point bottomleft, Point bottomright,

int interpolation)

{

double sourceWidth = sourceBitmap.Width;

double sourceHeight = sourceBitmap.Height;

//Find dimensions of new image

Point[] pointarray = new Point[] { topleft,

topright, bottomright, bottomleft };

Trang 13

int width = int.MinValue;

int height = int.MinValue;

foreach (Point p in pointarray)

{

width = Math.Max(width, p.X);

height = Math.Max(height, p.Y);

}

Bitmap bitmap = new Bitmap(width, height);

//For faster image processing

BitmapProcessing.FastBitmap newBmp = new

BitmapProcessing.FastBitmap(bitmap);

BitmapProcessing.FastBitmap sourceBmp = new

BitmapProcessing.FastBitmap(sourceBitmap);

newBmp.LockImage();

sourceBmp.LockImage();

//Key points

PointF A = (PointF)topleft;

PointF B = (PointF)topright;

PointF C = (PointF)bottomright;

PointF D = (PointF)bottomleft;

//Get corner intersections

PointF O = GetIntersection(new Vector(B, mAB), newVector(C, mCD));

PointF N = GetIntersection(new Vector(A, mAD), newVector(B, mBC));

if (interpolation <= 0) interpolation = 1;

int middleX = (int)(interpolation / 2.0);

//Array of surronding pixels used for

Trang 14

{

for (int x = 0; x < width; x++)

{

PointF P = new PointF(x, y);

float mPO = mAB; //Default value

//find the pixels which surround the point

double yP0 = sourceHeight * dJP / dJK; double xP0 = sourceWidth * dLP / dLM;

Trang 15

//top left coordinates of surrounding pixels

if (xP0 < 0) xP0 ;

if (yP0 < 0) yP0 ;

int left = (int)xP0;

int top = (int)yP0;

if ((left < -1 || left > sourceWidth) && (top < -1 || top > sourceHeight))

double xFrac = xP0 - (double)left;

double xFracRec = 1.0 - xFrac;

double yFrac = yP0 - (double)top;

double yFracRec = 1.0 - yFrac;

//get source pixel colors, or white if out

of range (to interpolate into the background color)

Trang 16

//copy colors from 1, sy

source[0, sy, 0] = source[1, sy, 0];

source[0, sy, 1] = source[1, sy, 1];

source[0, sy, 2] = source[1, sy, 2];

source[0, sy, 3] = source[1, sy, 3];

}

else

{

//compute colors by interpolation

source[0, sy, 0] = source[0, sy, 0] * xFracRec + source[middleX, sy, 0] * xFrac;

source[0, sy, 1] = source[0, sy, 1] * xFracRec + source[middleX, sy, 1] * xFrac;

source[0, sy, 2] = source[0, sy, 2] * xFracRec + source[middleX, sy, 2] * xFrac;

source[0, sy, 3] = source[0, sy, 3] * xFracRec + source[middleX, sy, 3] * xFrac;

Trang 17

//copy colors from 0, 1

source[0, 0, 0] = source[0, middleX, 0];

source[0, 0, 1] = source[0, middleX, 1];

source[0, 0, 2] = source[0, middleX, 2];

source[0, 0, 3] = source[0, middleX, 3];

}

else

{

source[0, 0, 0] = source[0, 0, 0] * yFracRec + source[0, middleX, 0] * yFrac;

source[0, 0, 1] = source[0, 0, 1] * yFracRec + source[0, middleX, 1] * yFrac;

source[0, 0, 2] = source[0, 0, 2] * yFracRec + source[0, middleX, 2] * yFrac;

source[0, 0, 3] = source[0, 0, 3] * yFracRec + source[0, middleX, 3] * yFrac;

Trang 18

CHƯƠNG 4: GIAO DIỆN CHƯƠNG TRÌNH 4.1 Giao diện khi mở ảnh

Hình 4.1: Giao diện khi mở ảnh

4.2 Giao diện khi chỉnh sửa ảnh

Hình 4.2: Giao diện khi chỉnh sửa ảnh

Trang 19

CHƯƠNG 5: KẾT QUẢ VÀ HƯỚNG PHÁT TRIỂN 5.1 Kết quả

 Hiểu được tầm quan trọng của xử lý ảnh và ứng dụng của môn học trong việc giải quyết các vấn đề thực tế;

 Nắm được những kiến thức cơ bản về xử lý ảnh và áp dụng vào giải quyết các bài toán cụ thể

5.2 Hướng phát triển

 Phát triển đề tài thêm nhiều tính năng mới, hoàn thiện hơn;

 Sử dụng bài toán để giải quyết một số yêu cầu trong thực tế

14

Trang 20

TÀI LIỆU THAM KHẢO

1 Slide bài giảng “Xử Lý Ảnh”, TS Đào Nam Anh, Trường Đại Học

Điện Lực, 2014

2 Visual C# Kicks – High-quality NET articles and components,

http://www.vcskicks.com

Trang 21

NHẬN XÉT, ĐÁNH GIÁ CỦA GIÁO VIÊN

16

Ngày đăng: 21/01/2016, 12:22

TỪ KHÓA LIÊN QUAN

w