Xây dựng hệ thống thử nghiệm

Một phần của tài liệu Kỹ thuật bảo vệ bản quyền bản đồ trong hệ thống thông tin địa lý (Trang 61)

3.3.1. Chức năng của chương trình

Hệ thống chƣơng trình ứng dụng thử nghiệm gồm hai chức năng chính:

Chức năng nhúng thủy vân cho phép thực hiện các thao tác sau đây:

- Đọc thông tin của file dữ liệu bản đồ gốc và hiển thị bản đồ trên form, - Nhập dấu thủy vân cần nhúng,

- Nhập các thông tin khóa mã hóa: Ngƣỡng đặc trƣng, ngƣỡng giản lƣợc, sai số cho phép, tham số mật .

- Thực hiện bƣớc giản lƣợc và phân nhóm bản đồ.

- Lựa chọn thuật toán (mặc định là thuật toán 2). Thực hiện nhúng dấu thủy vân vào bản đồ và hiển thị trên form.

- Ghi bản đồ đã nhúng thủy vân và thông tin khóa giải mã ra file.

Chức năng tách thủy vân cho phép thực hiện các thao tác sau:

- Đọc thông tin của file dữ liệu bản đồ cần tách dấu thủy vân và hiển thị bản đồ đó lên form.

- Mở và đọc thông tin của file khóa giải mã.

- Lựa chọn thuật toán (mặc định là thuật toán 2). Thực hiện tách dấu thủy vân từ bản đồ đƣợc đọc và file khóa.

- So sánh và tính toán hệ số tƣơng quan tuyến tính giữa dấu thủy vân tìm đƣợc và dấu thủy vân gốc.

Trong chƣơng trình thử nghiệm này, tác giả luận văn lựa chọn cả 2 thuật toán 1 và thuật toán 2 đã đƣợc trình bày trong mục 2.3 để đƣa vào chƣơng trình thử nghiệm. Sự khác biệt cơ bản giữa 2 thuật toán là việc thuật toán 2 bổ sung tính bền vững đối với phép biến đổi co giãn bản đồ, trong đó sử dụng tham số "độ rộng vành" thay đổi theo các nhóm khác nhau dựa vào khoảng cách lớn nhất từ tâm tới các điểm đặc trƣng. Thuật toán 2 giúp cho dấu thủy vân bền vững với cả sự tác động của phép co giãn bản đồ.

Biểu đồ User Case chức năng Nhúng thủy vân và Tách thủy vân:

Hình 3. 1. Biểu đồ Use Case - Nhúng thủy vân

User

Đƣa vào bản đồ cần nhúng thủy vân

Nhập dấu thủy vân cần nhúng Nhập các thông tin khóa mã hóa Giản lƣợc và phân nhóm bản đồ Nhúng thủy vân

Ghi lại file đã nhúng thủy vân

Hình 3. 2. Biểu đồ Use Case - Tách thủy vân

User

Đƣa vào bản đồ cần tách thủy vân

Mở và đọc thông tin file khóa giải mã

Giản lƣợc và phân nhóm bản đồ Tách thủy vân

Biểu đồ Activity của hệ thống Nhúng thủy vân:

User System

Hình 3. 3. Biểu đồ Activity - Nhúng thủy vân

Thực hiện nhúng thủy vân

Mở file bản đồ

Hiển thị file bản đồ (adsbygoogle = window.adsbygoogle || []).push({});

Nhập dấu thủy vân cần nhúng

Ghi nhận dấu thủy vân cần nhúng

Nhập các thông tin khóa mã hóa

Ghi nhận các thông tin khóa mã hóa

Giản lƣợc và phân nhóm bản đồ

Chọn thuật toán. Nhúng

thủy vân Thực hiện nhúng thủy vân

Thực hiện Giản lƣợc và phân nhóm bản đồ

Hiển thị bản đồ sau khi nhúng thủy vân

3.3.2. Giao diện chương trình

Hình 3. 4. Giao diện chương trình thử nghiệm.

Hình 3. 6. Giao diện trích thủy vân sau khi chọn file key.

3.4. Đánh giá kết quả đạt được

Trong khuôn khổ một ứng dụng minh họa, nguồn dữ liệu và các đặc trƣng bản đồ có thể không đƣợc đầy đủ. Tuy nhiên ứng dụng đã thể hiện đƣợc một cách đầy đủ độ mạnh của thuật toán thủy vân và các xử lý có thể dùng trong các ứng dụng trong thực tế.

Với chƣơng trình thử nghiệm, quá trình nhúng – tách thủy vân đƣợc thực hiện. Kết quả nhúng – tách thủy vân cho thấy, thuật toán đã đảm bảo tính bền vững của lƣợc đồ thủy vân đối với nhiều hƣớng tác động lên bản đồ, trong đó có phép biến đổi co giãn bản đồ.

KẾT LUẬN

Luận văn đã tìm hiểu các vấn đề cơ bản xung quanh việc ứng dụng phƣơng pháp thủy vân số vào các bản đồ vectơ nhằm bảo vệ bản quyền các sản phẩm của hệ thống thông tin địa lý - GIS. Trong phần lý thuyết, ngoài những nội dung cơ bản về GIS, thủy vân số, lƣợc đồ thủy vân số tổng quát, tác giả đi sâu vào việc phân tích thủy vân số trên bản đồ vectơ, những đặc điểm riêng của bản đồ vectơ so với các loại dữ liệu đa phƣơng tiện khác nhƣ audio, ảnh số, video nhằm xác định rõ đƣợc những lƣu ý và hƣớng tiếp cận của thủy vân số trên bản đồ vectơ. Trên cơ sở tìm hiểu các thuật toán thủy vân số trên bản đồ vectơ đã đƣợc các nhà nghiên cứu trên thế giới và trong nƣớc đƣa ra, tác giả tổng hợp lại một số thuật toán theo tác giả là khá hiệu quả trong việc thủy vân hai loại dữ liệu đặc thù của bản đồ vector: Bản đồ dạng vùng và bản đồ dạng tuyến.

Trong phần thử nghiệm, tác giả đã cài đặt lƣợc đồ thủy vân trên các dữ liệu thực tế do tác giả sƣu tầm đƣợc để có thể có minh họa trực quan tốt nhất cho thuật toán lựa chọn. Kết quả thực nghiệm cho thấy khả năng ứng dụng của thuật toán trên các bản đồ vector trong thực tế là rất lớn. Các bản đồ vectơ số ngày càng đƣợc sử dụng cho nhiều ứng dụng và công nghệ khác nhau. Các vấn đề nhƣ vi phạm bản quyền, xác thực dữ liệu, truy tìm nguồn gốc, sao chép, phân phối một cách bật hợp pháp đang làm giới hạn rất nhiều ứng dụng của bản đồ vectơ số nói chung và GIS nói riêng. Tác giả luận văn mong muốn có thể góp sức đƣa các nghiên cứu về thủy vân số trên bản đồ vectơ vào ứng dụng thực tế để giải quyết các vấn đề trên.

Do tác giả mới đƣợc tiếp cận với thủy vân số, cũng nhƣ GIS, trong khi thời gian giành cho việc nghiên cứu, tìm hiểu còn ít nên luận văn vẫn còn tồn tại những hạn chế nhất định nhƣ: chỉ tập trung tìm hiểu vài thuật toán cụ thể, chƣa đi chi tiết vào các lƣợc đồ của nhiều tác giả khác mà đã có các ứng dụng trong thực tế; Chƣa đƣợc tiếp xúc với các loại dữ liệu khác nhau của bản đồ số trong các hệ thống GIS thực tế.

Hƣớng nghiên cứu tiếp theo: Thủy vân số là một lĩnh vực nghiên cứu thú vị và thiết thực. Tác giả luận văn mong muốn tiếp tục nghiên cứu, tìm hiểu nhiều hơn các thuật toán thủy vân đã đƣợc công bố trên thế giới, tổng hợp, phân tích và có thể làm mới thêm các thuật toán để cải thiện, tăng cƣờng hiệu quả ứng dụng trong thực tế. Thực tế chứng minh, con ngƣời và các hệ thống sau một thời gian luôn đƣa ra nhiều thách thức, nhiều vấn đề cần giải quyết mới. GIS cũng vậy, càng đƣợc ứng dụng rộng rãi, GIS càng đòi hỏi nhiều hơn về thiết kế hệ thống, các chức năng phụ trợ nhằm tăng hiệu năng sử dụng; tăng khả năng bền vững của thủy vân bản vệ bản quyền bản đồ trƣớc nhiều loại tấn công ngày càng đa dạng, phức tạp; độ đo sự chính xác của bản đồ (kết hợp các ƣu điểm của PSNR, sai số cho phép); xác thực dữ liệu (ngoài giải mã thủy vân còn phải xác minh tính toàn vẹn của dữ liệu);… Đó cũng là các hƣớng nghiên cứu thú vị trên bản đồ vectơ.

TÀI LIỆU THAM KHẢO Tài liệu tham khảo tiếng Việt:

[1] Đặng Văn Đức (2001), Hệ thống thông tin địa lý, NXB Khoa học và kỹ thuật, Hà Nội.

[2] Phạm Đức Thọ, Đặng Văn Đức (2014), Phát triển thuật toán thủy vân mạng lƣới đƣờng phố bền vững đối với phép biến đổi co dãn bản đồ, Kỷ yếu Hội thảo FAIR,

Thái Nguyên.

Tài liệu tham khảo tiếng Anh:

[3] Busch C. M. Voigt (2002), "Watermarking 2D-Vector data for geographical information systems", Proc. of the SPIE, Security and Watermarking of Multimedia Content4675, 621.

[4] Enviremental System Reseach Institute - ESRI (1998), ESRI shapefile Technical Description, USA.

[5] Haowen Yan & Jonathan Li (2012), Blind watermarking technique for topographic map data, Appl Geomat, Springer.

[6] I-Chang Jou, Yu-Chi Pu (2009), “Blind and Robust Watermarking for Street- Network Vector Maps”, Information Technology Journal, Volume 8.

[7] Julien Lafaye, Jean Beguec, David Gross-Amblard and Anne Ruas (2007), Geographical Database Watermarking by Polygon Elongation, Technical Report, Laboratoire CEDRIC, France. (adsbygoogle = window.adsbygoogle || []).push({});

[8] MatthewL., Miller Ingemar J. Cox, Jeffrey A. Bloom, Jessica Fridrich, Ton Kalker (2008), Digital Watermarking and Steganography. Morgan Kaufmann

Publishers, MA, USA.

[9] Shelvie Nidya Neyman, I Nyoman Prama Pradnyana, Benhard Sitohang (2014), “A New Copyright Protection for Vector Map using FFTbased Watermarking”,

TELKOMNIKA, Vol.12, No.2.

[10] Tawfiq A. Abbas, Majid Jabbar Jawad, Sud Sudirman (2013), “Robust Watermarking of Digital Vector Maps for Copyright Protection”, Proceding of PGNet, ISBN: 978-1-902560-27-4.

[11] XiaMu Niu (2006), "A survey of digital vector map watermarking",

PHỤ LỤC

PHỤ LỤC 1: PHÉP BIẾN ĐỔI FOURIER RỜI RẠC

1.1. Biến đổi Fourier rời rạc một chiều

Xét dãy rời rạc . Biến đổi Fourier rời rạc thuận ngƣợc một chiều xác định bởi

(1)

với , và

với . (2)

1.2. Biến đổi Fourier rời rạc hai chiều

Cặp biến đổi Fourier rời rạc hai chiều thuận ngƣợc cho bởi

(3)

Và (4)

1.3. Phép biến đổi Cosin rời rạc

Cặp biến đổi Cosin rời rạc một chiều thuận ngƣợc cho bởi

(5)

và (6)

trong đó

Cặp biến đổi Cosin rời rạc hai chiều thuận nghịch xác định bởi

(7)

với và

(8)

PHỤ LỤC 2: CẤU TRÚC FILE SHAPEFILE

2.1. Main file header

Main file header có độ dài 100 bytes. ... chỉ ra các trƣờng trong file header với vị trí byte, giá trị, kiểu và thứ tự byte của chúng. Trong bảng này, vị trí đƣợc là tƣơng đối tính từ vị trí bắt đầu file.

Bảng II.1. Mô tả của Main file header (adsbygoogle = window.adsbygoogle || []).push({});

Position Field Value Type Byte Order

Byte 0 File Code 9994 Integer Big

Byte 4 Unused 0 Integer Big

Byte 8 Unused 0 Integer Big

Byte 12 Unused 0 Integer Big

Byte 16 Unused 0 Integer Big

Byte 20 Unused 0 Integer Big

Byte 24 FileLength FileLength Integer Big Byte 28 Version 1000 Integer Little Byte 32 ShapeType ShapeType Integer Little Byte 36 Bounding Box Xmin Double Little Byte 44 Bounding Box Ymin Double Little Byte 52 Bounding Box Xmax Double Little Byte 60 Bounding Box Ymax Double Little Byte 68* Bounding Box Zmin Double Little Byte 76* Bounding Box Zmax Double Little Byte 84* Bounding Box Mmin Double Little Byte 92* Bounding Box Mmax Double Little * Không dùng nếu có giá trị 0.0, nếu không thì là độ đo hoặc kiểu Z.

Giá trị của độ dài file là tổng độ dài của file theo đơn vị là các từ 16-bit, trong đó bao gồm 50 từ (tức là 100 byte) của file header. Tất cả các hình dạng không null trong một shapefile phải có cùng kiểu shape. Các giá trị của kiểu đƣợc cho trong

Bảng II.2.Các giá trị của shape type.

Giá trị Kiểu Shape

0 Null Shape 1 Point 3 PolyLine 5 Polygon 8 MultiPoint 11 PointZ 13 PolyLineZ 15 PolygonZ 18 MultiPointZ 21 PointM 23 PolyLineM 25 PolygonM 28 MultiPointM 31 MultiPatch

Hộp biên (Bounding Box) trong main file header chứa phạm vi thực sự của các shape trong file: Hình chữ nhật bé nhất phủ toàn bộ các shape có cạnh song song với trục X và Y (và có khả năng mở rộng với trục M và Z). Nếu shapefile là rỗng (không có bản ghi nào) thì giá trị của Xmin, Ymin, Xmax, và Ymax không đƣợc xác định.

2.2. Các header bản ghi

Header cho mỗi bản ghi chứa số hiệu bản ghi và độ dài nội dung của bản ghi đó. Các header bản ghi có độ dài cố định là 8 byte. Bảng II.3 mô tả các trƣờng của header bản ghi, với vị trí đƣợc tính từ đầu của bản ghi tƣơng ứng.

Bảng II.3. Mô tả header bản ghi.

Position Field Value Type Byte Order

Byte0 Record Number Số hiệu bản ghi Integer Big Byte4 Content Length Độ dài nội dung Integer Big

Số hiệu bản ghi bắt đầu từ 1. Độ dài nội dung bản ghi là độ dài của phần nội dung bản ghi theo đơn vị từ 16-bit. Do đó, mỗi bản ghi sẽ đóng góp số lƣợng từ 16-bit là (4 + độ dài nội dung) vào tổng độ dài của file (đƣợc chứa ở Byte 24 trong file header).

2.3. Nội dung bản ghi

Nội dung bản ghi shapefile bao gồm một kiểu shape, theo sau bởi dữ liệu hình học của shape đó. Độ dài của nội dung bản ghi phụ thuộc vào số thành phần và số đỉnh trong shape.

Tiếp sau đây trình bày một số nội dung bản ghi theo các kiểu shape trong hệ quy chiếu X, Y.

Kiểu Point (điểm). Một điểm bao gồm một cặp tọa độ kiểu double-precision theo thứ tự X, Y. Point { Double X // X coordinate Double Y // Y coordinate }

Bảng II.4. Nội dung bản ghi biểu diễn điểm.

Position Field Value Type Number Byte Order

Byte 0 ShapeType 1 Integer 1 Little

Byte 4 X X Double 1 Little

Byte 12 Y Y Double 1 Little

Kiểu MultiPoint (đa điểm). Biểu diễn một tập các điểm, nhƣ sau: MultiPoint

Double[4] Box // Bounding Box (adsbygoogle = window.adsbygoogle || []).push({});

Integer NumPoints // Number of Points

Point[NumPoints] Points // The Points in the Set }

Hộp Biên (Bounding Box) đƣợc lƣu theo thứ tự Xmin, Ymin, Xmax, Ymax.

Bảng II.5. Nội dung bản ghi biểu diễn đa điểm.

Position Field Value Type Number Byte Order

Byte 0 Shape Type 8 Integer 1 Little

Byte 4 Box Box Double 4 Little

Byte 36 NumPoints NumPoints Integer 1 Little Byte 40 Points Points Point NumPoints Little

Kiểu PolyLine (đa đoạn). Một PolyLine là một tập có thứ tự các đỉnh bao gồm một hoặc nhiều thành phần. Một phần là một thành phần liên thông gồm ít nhất hai đỉnh. Các phần có thể hoặc không liên thông với phần khác. Các phần có thể hoặc không cắt nhau với phần khác. Do là đặc tả này không cấm các điểm liên tục với các tọa độ trùng nhau, nên khi đọc shapefile phải kiểm soát đƣợc các trƣờng hợp nhƣ vậy. Việc dẫn tới các phần thoái hóa có độ dài bằng không là không đƣợc phép.

PolyLine {

Double[4] Box // Bounding Box Integer NumParts // Number of Parts

Integer NumPoints // Total Number of Points

Integer[NumParts] Parts // Index to First Point in Part Point[NumPoints] Points // Points for All Parts

}

Các trƣờng của một PolyLine đƣợc mô tả chi tiết sau đây:

Box: Hộp Biên cho PolyLine đƣợc lƣu theo thứ tự Xmin, Ymin, Xmax, Ymax. NumParts: Số các phần trong PolyLine.

NumPoints: Tổng số các điểm trong tất cả các phần của PolyLine.

Parts: Một mảng có độ dài NumParts chứa chỉ số của điểm đầu tiên của nó trong mảng các điểm. Các chỉ số mảng đƣợc đánh từ 0.

Points: Một mảng có độ dài NumPoints. ...

Bảng II.6. Nội dung bản ghi chi tiết đa đoạn.

Position Field Value Type Number Byte Order

Byte 0 ShapeType 3 Integer 1 Little

Byte 4 Box Box Double 4 Little

Byte 36 NumParts NumParts Integer 1 Little Byte 40 NumPoints NumPoints Integer 1 Little Byte 44 Parts Parts Integer NumParts Little Byte X Points Points Point NumPoints Little

Chú ý: X = 44 + 4 * NumParts.

Kiểu Polygon (Đa giác)

Một đa giác bao gồm một hoặc hơn một vành. Một vành là một chuỗi đóng liên thông của ít nhất 4 điểm, không tự cắt. Một đa giác có thể chứa nhiều vành ngoài. Thứ tự của các định hoặc hƣớng của một vành chỉ ra mặt nào của vành là phía trong của đa giác. Lân cận bên phải của ngƣời quan sát đi dọc theo vành theo thứ tự đỉnh là thuộc vùng phía trong của đa giác. Các đỉnh của các vành định nghĩa lỗ rỗng trong đa giác theo hƣớng ngƣợc chiều kim đồng hồ. Các đỉnh của vành đơn do đó luôn có thứ tự thuận chiều kim đồng hồ. Các vành của một đa giác đƣợc cho bởi các part (phần) của nó.

Lƣu ý là các điểm liên tiếp không nhất thiết phải phân biệt, nên khi đọc shapefile phải xử lý tình huống này. Cấu trúc của đa giác cũng giống nhƣ cấu trúc đa đoạn, nhƣ sau

Polygon {

Integer NumParts // Number of Parts (adsbygoogle = window.adsbygoogle || []).push({});

Integer NumPoints // Total Number of Points

Integer[NumParts] Parts // Index to First Point in Part Point[NumPoints] Points // Points for All Parts

}

Các trƣờng của một đa giác đƣợc mô tả chi tiết nhƣ sau:

Box: Hộp biên của đa giác theo thứ tự Xmin, Ymin, Xmax, Ymax. NumParts: Số vành trong đa giác.

NumPoints: Tổng số điểm trong tất cả các vành.

Parts: Một mảng gồm NumParts phần tử, chứa chỉ số điểm đầu tiên của mỗi vành trong mảng Points.

Points: Một mảng gồm NumPoints phần tử. Các điểm cho vành 2 nối tiếp các điểm của vành 1 và cứ nhƣ vậy.

Một ví dụ về đa giác gồm 2 vành và 10 điểm nhƣ sau:

Hình II. 1. Ví dụ một đa giác gồm hai vành.

Thứ tự các đỉnh đƣợc lƣu trữ trong shape file đƣợc minh họa bởi Hình sau:

Bảng II.7. Nội dung bản ghi đa giác.

Position Field Value Type Number Byte Order

Byte 0 ShapeType 5 Integer 1 Little

Byte 4 Box Box Double 4 Little

Một phần của tài liệu Kỹ thuật bảo vệ bản quyền bản đồ trong hệ thống thông tin địa lý (Trang 61)