Nghiên cứu kỹ thuật hiển thị hình ảnh ba chiềuu

72 176 0
Nghiên cứu kỹ thuật hiển thị hình ảnh ba chiềuu

Đ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

ĐẠI HỌC THÁI NGUYÊN TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG VŨ THỊ MAI HƯƠNG GIANG NGHIÊN CỨU KỸ THUẬT HIỂN THỊ HÌNH ẢNH BA CHIỀU LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH THÁI NGUYÊN - 2016 ĐẠI HỌC THÁI NGUYÊN TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG VŨ THỊ MAI HƯƠNG GIANG NGHIÊN CỨU KỸ THUẬT HIỂN THỊ HÌNH ẢNH BA CHIỀU Chuyên ngành Mã số : Khoa học máy tính : 60480101 LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH NGƯỜI HƯỚNG DẪN KHOA HỌC: PGS TS ĐỖ NĂNG TOÀN THÁI NGUYÊN - 2016 LỜI CAM ĐOAN Tôi xin cam đoan luận văn công trình nghiên cứu riêng cá nhân tôi, kết luận văn hoàn toàn kết tự thân tìm hiểu, nghiên cứu hướng dẫn giáo viên hướng dẫn PGS.TS Đỗ Năng Toàn Tôi hoàn toàn chịu trách nhiệm tính pháp lý trình nghiên cứu khoa học luận văn Thái Nguyên, 16 tháng năm 2016 Học viên Vũ Thị Mai Hương Giang LỜI CẢM ƠN Lời đầu tiên, em xin gửi lời biết ơn sâu sắc đến PGS TS Đỗ Năng Toàn người tận tình hướng dẫn, bảo, giúp đỡ em suốt trình làm luận văn Con xin gửi lời cảm ơn Ba, Mẹ, anh chị em gia đình bên để ủng hộ, động viên tạo điều kiện giúp đỡ suốt trình học tập nghiên cứu làm luận văn Học viên xin gửi lời cảm ơn đến thầy cô giáo trường Đại học Công nghệ thông tin Truyền thông - Đại học Thái Nguyên, thầy cô Viện Công nghệ thông tin truyền đạt kiến thức giúp đỡ em suốt trình học Học viên xin gửi lời cảm ơn tới Ban giám hiệu Trường Đại học Y Dược Thái Nguyên, đồng nghiệp bạn bè tạo điều kiện thuận lợi cho học viên tham gia khóa học trình hoàn thành luận văn Thái Nguyên,16 tháng năm 2016 Học viên Vũ Thị Mai Hương Giang MỤC LỤC LỜI CAM ĐOAN LỜI CẢM ƠN DANH MỤC HÌNH DANH MỤC TỪ VIẾT TẮT PHẦN MỞ ĐẦU CHƯƠNG I KHÁI QUÁT VỀ ĐỒ HOẠ 3D VÀ BÀI TOÁN HIỂN THỊ 3D 1.1 Khái quát kỹ thuật đồ hoạ 3D 1.1.1 Đồ họa 3D gì? 1.1.2 Lịch sử phát triển 1.1.3 Các kỹ thuật đồ họa 1.1.4 Phần cứng đồ họa (Graphics HardWare) 1.1.5 Các ứng dụng đồ họa 3D 15 1.2 Bài toán hiển thị đối tượng 3D 17 1.2.1 Phát biểu toán ứng dụng 17 1.2.2 Nguyên lý 3D (three-Dimension) 18 1.2.3 Đặc điểm kỹ thuật đồ hoạ 3D 18 1.2.4 Các phương pháp hiển thị 3D 19 CHƯƠNG 21 MỘT SỐ VẤN ĐỀ TRONG HIỂN THỊ HÌNH ẢNH CHIỀU 21 2.1 Biểu diến liệu 3D 21 2.1.1 Kỹ thuật biểu diễn bề mặt (Surface rendering - SR) 21 2.1.2 Kỹ thuật biểu diễn thể tích (volume rendering - VR) 27 2.2 Hiển thị 3D 33 2.2.1 Kỹ thuật hiển thị Stereo 33 2.2.2 Kỹ thuật hiển thị hình ảnh thông qua phép chiếu 42 CHƯƠNG 3: CHƯƠNG TRÌNH THỬ NGHIỆM 48 3.1 Bài toán 48 3.2 Phân tích, lựa chọn công cụ 48 3.2.1 Phân tích 48 3.2.2 Lựa chọn công cụ 49 3.3 Chương trình thử nghiệm 56 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 61 TÀI LIỆU THAM KHẢO 63 DANH MỤC HÌNH Hình 1 Ảnh đồ hoạ điểm Hình Kỹ thuật đồ họa điểm Hình Mô hình đồ họa vector Hình 4.Các thành phần cứng hệ đồ hoạ tương tác Hình Cấu tạo hình CRT 10 Hình Tổ chức bảng tra màu LUT (Look Up Table) 13 Hình Phép chiếu Stereo 18 Hình Các cách mô tả đối tượng 3D 19 Hình Các góc nhìn khác mô hình 3D 19 Hình 10 Các phương pháp hiển thị 3D 20 Hình Hình ảnh 3D biểu diễn theo phương pháp SR 21 Hình 2 Minh họa thuật toán Marching square 22 Hình 16 trường hợp Marching Square 22 Hình Minh họa tạo bề mặt từ đường viền 23 Hình Xây dựng bề mặt theo giá trị đỉnh 24 Hình Các trường hợp mặt qua khối lập phương thuật toán Marching Cubes 24 Hình Một trường hợp lỗi Marching Cubes 25 Hình Chia khối lập phương thành khối tứ diện 26 Hình Hai trường hợp mặt phẳng qua khối tứ diện 26 Hình 10 Minh họa thuật toán Dividing Cubes để vẽ đường mặt phẳng 26 Hình 11 Minh họa thuật toán Dividing Cubes không gian ba chiều 27 Hình 12 Hình ảnh 3D biểu diễn theo phương pháp VR 27 Hình 13 Minh họa kỹ thuật object –order 28 Hình 14 Minh họa kỹ thuật image –order 28 Hình 15 Mô hình Blinn / Kajiya 30 Hình 16 Sơ đồ tổng quan rendering MIP 32 Hình 17 Tạo cảnh 3D lập thể 34 Hình 18 Kính Anaglyph 3D 37 Hình 19 Thiết bị Head - gắn kết 38 Hình 20 Kính màu Anaglyph 3D 39 Hình 21 Quá trình thu nhận ảnh người 40 Hình 22 Quan sát đối tượng mắt (mắt phải) 41 Hình 23 Dùng hai camera để tạo hai hình ảnh đối tượng 41 Hình 24 Ví dụ minh họa phép chiếu phối cảnh 42 Hình 25 Điểm triệt tiêu 42 Hình 26 Phép chiếu phối cảnh tâm chiếu 43 Hình 27 Phép chiếu phối cảnh tâm chiếu 44 Hình 28 Phép chiếu phối cảnh tâm chiếu 46 Hình 29 Kính xem ảnh stereo cho người mắt 47 Hình 30 Hiển thị stereo với người hai mắt 47 Hình Hình ảnh Stereo hiển thị 59 Hình Hình ảnh Stereo xoay trái 59 Hình 3 Hình ảnh Stereo xoay phải 60 DANH MỤC TỪ VIẾT TẮT STT Ký hiệu Tiếng Anh Tiếng Việt 2D Two - dimensional Không gian hai chiều 3D Three - dimensional Không gian ba chiều CPU Central Processing Unit Bộ xử lí trung tâm GPU Graphic Processing Unit Bộ xử lí đồ họa SR Surface rendering Biểu diễn bề mặt VR Volum rendering Biểu diễn thể tích CRT Cathode ray tube Màn hình CRT MC Marching Cube s Thuật toán Marching Cubes MT Marching Tetrahedra 10 11 12 MIP MinIP LCD Phương pháp tạo bố cục cho projection ảnh Minimum intensity Phương pháp tạo bố cục cho projection ảnh Liquid Crystal Display Màn hình DICOM COmmunications in Medicine Standars 14 COP Tetrahedra Maximum intensity Digital Imaging and 13 Thuật toán Marching Centre Of Projection Tiêu chuẩn ảnh số truyền thông y tế Tâm chiếu PHẦN MỞ ĐẦU Hiện nay, ngành công nghệ thông tin ngày xâm nhập vào lĩnh vực đời sống xã hội ứng dụng tiến Tin học ngày làm cho thứ trở nên đại dễ sử dụng Cùng với đà phát triển đó, phải kể đến phát triển công nghệ ba chiều, công nghệ sử dụng cách phổ biến nay, tức hình ảnh dựng nên cách sống động thật với trợ giúp phần mềm đồ họa vi tính Do nhu cầu người ngày tăng, việc mô giới thực điều phải thực Từ ứng dụng thiết kế ba chiều phục vụ cho việc chế tạo máy móc thiết bị, xây dựng nhà công trình kiến trúc, đến ứng dụng mô thử nghiệm tính công nghiệp chế tạo xe hơi, máy bay,…Điều cho thấy công nghệ ba chiều thiếu sống Tuy nhiên, tất kỹ thuật làm cho người có cảm giác dường cảnh xem thực, người cảm nhận chiều thứ ba đối tượng Hiển thị ba chiều hay gọi hiển thị Stereo kỹ thuật biểu diễn đối tượng giới ba chiều lên mặt phẳng hai chiều mà làm cho người cảm nhận chiều thứ ba Thông thường, để quan sát hình ảnh Stereo cần phải có thiết bị phần cứng hỗ trợ như: Card hình hỗ trợ stereo, kính quan sát stereo, thiết bị Emitter truyền tín hiệu từ card hình đến kính quan sát Trong lĩnh vực biểu diễn, hiển thị hình ảnh 3D có hai phần tạo mô hình bề mặt (Modeling) tạo chuyển động cho mô hình (Animation) Hiển thị hình ảnh ba chiều coi bước khởi đầu cho hệ thống mô thực ảo, góp phần tạo nên hệ thống mô hoàn chỉnh Ví dụ tạo hình ảnh ba chiều phong cảnh rộng lớn, hình ảnh ba chiều đối tượng sống chí hình ảnh ba chiều vật thể chuyển động Các mô hình cho ảnh ba chiều tổng hợp hoàn toàn ảo, tạo mô hình 3D máy tính,…Đây lĩnh vực thu hút quan tâm nhiều giới nghiên cứu lĩnh vực công nghệ thông tin chục năm qua Hiển thị hình ảnh ba chiều đích hướng tới kỹ thuật công nghệ thông tin đại nhằm giúp người tương tác cách thân thiện với máy tính, lĩnh vực xu hướng tất yếu thời đại mới, đáp ứng nhu cầu đa dạng người xã hội ngày Từ lý với gợi ý Thầy hướng dẫn học viên lựa chọn đề tài “Nghiên cứu kỹ thuật hiển thị hình ảnh chiều” Đối tượng phạm vi nghiên cứu - Đối tượng nghiên cứu: Mô hình đối tượng 3D máy tính - Phạm vi nghiên cứu: Đối tượng riêng lẻ hay đơn đối tượng Phương pháp nghiên cứu - Phương pháp nghiên cứu lý thuyết: Tìm hiểu, tổng hợp tài liệu, phân tích, đánh giá phương pháp - Phương pháp thực nghiệm: xây dựng chương trình cụ thể để thử nghiệm, phân tích, đánh giá kết đạt Luận văn gồm ba phần chính: Chương 1: KHÁI QUÁT VỀ ĐỒ HOẠ 3D VÀ BÀI TOÁN HIỂN THỊ 3D Chương khái quát đồ họa 3D, Nguyên lý 3D toán hiển thị đối tượng 3D Chương 2: MỘT SỐ VẤN ĐỀ TRONG HIỂN THỊ HÌNH ẢNH CHIỀU Chương giới thiệu số vấn đề hiển thị hình ảnh ba chiều, bao gồm việc biểu diễn liệu 3D hiển thị 3D Chương 3: CHƯƠNG TRÌNH THỬ NGHIỆM Microsoft Visual C++ (còn gọi MSVC) loại ngôn ngữ lập trình Đây dạng ngôn ngữ đa mẫu hình tự có kiểu tĩnh hỗ trợ lập trình thủ tục, liệu trừu trượng, lập trình hướng đối tượng, lập trình đa hình Từ thập niên 1990, C++ trở thành ngôn ngữ thương mại phổ biến Các chức Visual C++ tô sáng cú pháp, IntelliSense (chức tự động hoàn thành việc viết mã) chức gỡ lỗi tiên tiến Ví dụ, cho phép gỡ lỗi từ xa sử dụng máy tính khác cho phép gỡ lỗi cách duyệt qua dòng lệnh thời điểm Chức "biên tập tiếp tục" cho phép thay đổi mã nguồn dịch lại chương trình trình gỡ lỗi, mà không cần phải khởi động lại chương trình gỡ lỗi Đặc trưng biên dịch xây dựng hệ thống, tính tiền biên dịch tập tin đầu đề (header files) liên kết tịnh tiến (incremental link) - liên kết phần bị thay đổi trình xây dựng phần mềm mà không làm lại từ đầu: Những đặc trưng tính thuyên giảm tổng thời gian biên tập, biên dịch liên kết chương trình phần mềm, đặc biệt đề án phần mềm lớn So với C, C++ tăng cường thêm nhiều tính năng, bao gồm: khai báo mệnh đề, chuyển kiểu giống hàm, new/delete, bool, kiểu tham chiếu, const, hàm nội tuyến (inline), đối số mặc định, tải hàm, vùng tên (namespace), lớp (bao gồm tất chức liên quan tới lớp kế thừa, hàm thành viên (phương pháp), hàm ảo, lớp trừu tượng, cấu từ) Một số thành phần C++ sau thêm vào C, bao gồm const, inline, khai báo biến vòng lặp for giải kiểu C++ (sử dụng ký hiệu //) Tuy nhiên, C bổ sung thêm số tính C++, ví dụ macro với số đối số động Các mô tả mã trình bày tập trung vào khía cạnh âm stereo [9],[10] Đoạn mã ví dụ phù hợp với vài quy ước địa phương 50 Việc chạy cửa sổ chế độ toàn hình Theo quy ước ứng dụng chạy cửa sổ trừ tùy chọn “-f” dòng lệnh quy định Chế độ toàn hình hỗ trợ phiên gần thư viện GLUT Quyết định sử dụng chế độ toàn hình thực với đoạn mã sau: glutCreateWindow("Pulsar model"); glutReshapeWindow(600,400); if (fullscreen) glutFullScreen(); Nó hữu ích để chạy ứng dụng chế độ stereo chế độ mono, quy ước chạy mono trừ dòng lệnh chuyển đổi "-s" cung cấp Các thông tin sử dụng trợ giúp đầy đủ ví dụ trình bày có sẵn cách chạy ứng dụng với tùy chọn "-h" dòng lệnh, ví dụ: > pulsar -h Cách sử dụng: pulsar [h] [-f] [-s] [-c] -h this text -f full screen -s stereo -c show construction lines Key Strokes Arrow keys rotate left/ right/ up/ down Left mouse rotate Middle mouse roll c toggle construction lines i translate up k translate down j translate left l translate right [ roll clockwise 51 ] roll anti clockwise q quit Âm nổi: Điều mà cần phải thực để hỗ trợ âm stereo khởi tạo thư viện GLUT cho hoạt động âm Nếu thẻ/ drive bạn không hỗ trợ âm stereo việc hiển thị thất bại glutInit(&argc,argv); if (!stereo) glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB |GLUT_DEPTH); else glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB |GLUT_DEPTH | GLUT_STEREO); Trong chế độ stereo định nghĩa hai đệm cụ thể GL_BACK_LEFT GL_BACK_RIGHT Các đệm thích hợp chọn trước hoạt động ảnh hưởng đến việc thực hiện, điều sử dụng thường xuyên glDrawBuffer () Vì vậy, ví dụ sau để xóa hai đệm: glDrawBuffer(GL_BACK_LEFT); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); if (stereo) { glDrawBuffer(GL_BACK_RIGHT); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); } Lưu ý số thẻ (ví dụ: Powerstorm 4D51T) tối ưu hóa để xóa hai đệm bên trái bên phải GL_BACK xóa bỏ, điều thực nhanh đáng kể Trong trường hợp để xóa đệm ta làm sau: glDrawBuffer(GL_BACK); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); 52 3.2.2.1 Phép chiếu Tất lại đưa hình học vào đệm thích hợp Có nhiều cách, tùy thuộc vào ứng dụng cụ thể viết, ví dụ ta thấy trình xử lý hiển thị () Các ý tưởng chủ yếu để chọn đệm thích hợp đưa cảnh với phép chiếu thích hợp 3.2.2.2 Phương pháp Toe-in Một phương pháp phổ biến gọi phương pháp "toe-in", phương pháp nơi mà máy ảnh cho mắt bên trái mắt bên phải hướng tới tiêu điểm gluPerspective () sử dụng glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluPerspective(camera.aperture,screenwidth/(double)screenheight,0.1,10000.0); if (stereo) { CROSSPROD(camera.vd,camera.vu,right); Normalise(&right); right.x *= camera.eyesep / 2.0; right.y *= camera.eyesep / 2.0; right.z *= camera.eyesep / 2.0; glMatrixMode(GL_MODELVIEW); glDrawBuffer(GL_BACK_RIGHT); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glLoadIdentity(); gluLookAt(camera.vp.x + right.x, camera.vp.y + right.y, camera.vp.z + right.z, focus.x,focus.y,focus.z, camera.vu.x,camera.vu.y,camera.vu.z); MakeLighting(); MakeGeometry(); glMatrixMode(GL_MODELVIEW); glDrawBuffer(GL_BACK_LEFT); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glLoadIdentity(); gluLookAt(camera.vp.x - right.x, camera.vp.y - right.y, camera.vp.z - right.z, focus.x,focus.y,focus.z, camera.vu.x,camera.vu.y,camera.vu.z); 53 MakeLighting(); MakeGeometry(); } else { glMatrixMode(GL_MODELVIEW); glDrawBuffer(GL_BACK); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glLoadIdentity(); gluLookAt(camera.vp.x, camera.vp.y, camera.vp.z, focus.x,focus.y,focus.z, camera.vu.x,camera.vu.y,camera.vu.z); MakeLighting(); MakeGeometry(); } /* glFlush(); This isn't necessary for double buffers */ glutSwapBuffers(); 3.2.2.3 Phương pháp Các phương pháp Toe-in đem lại cho cặp âm stereo hoàn toàn không đúng, Phương pháp cho thấy phương sai dọc đáng ý cho đối tượng thuộc lĩnh vực bên xem Các phương pháp sử dụng gọi "trục song song hình cụt không đối xứng chiếu quan điểm" Trong trường hợp vector cho camera song song glFrustum () sử dụng để mô tả chiếu phối cảnh /* Misc stuff */ ratio = camera.screenwidth / (double)camera.screenheight; radians = DTOR * camera.aperture / 2; wd2 = near * tan(radians); ndfl = near / camera.focallength; if (stereo) { /* Derive the two eye positions */ CROSSPROD(camera.vd,camera.vu,r); Normalise(&r); r.x *= camera.eyesep / 2.0; r.y *= camera.eyesep / 2.0; 54 r.z *= camera.eyesep / 2.0; glMatrixMode(GL_PROJECTION); glLoadIdentity(); left = - ratio * wd2 - 0.5 * camera.eyesep * ndfl; right = ratio * wd2 - 0.5 * camera.eyesep * ndfl; top = wd2; bottom = - wd2; glFrustum(left,right,bottom,top,near,far); glMatrixMode(GL_MODELVIEW); glDrawBuffer(GL_BACK_RIGHT); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glLoadIdentity(); gluLookAt(camera.vp.x + r.x,camera.vp.y + r.y,camera.vp.z + r.z, camera.vp.x + r.x + camera.vd.x, camera.vp.y + r.y + camera.vd.y, camera.vp.z + r.z + camera.vd.z, camera.vu.x,camera.vu.y,camera.vu.z); MakeLighting(); MakeGeometry(); glMatrixMode(GL_PROJECTION); glLoadIdentity(); left = - ratio * wd2 + 0.5 * camera.eyesep * ndfl; right = ratio * wd2 + 0.5 * camera.eyesep * ndfl; top = wd2; bottom = - wd2; glFrustum(left,right,bottom,top,near,far); glMatrixMode(GL_MODELVIEW); glDrawBuffer(GL_BACK_LEFT); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glLoadIdentity(); gluLookAt(camera.vp.x - r.x,camera.vp.y - r.y,camera.vp.z - r.z, camera.vp.x - r.x + camera.vd.x, camera.vp.y - r.y + camera.vd.y, camera.vp.z - r.z + camera.vd.z, camera.vu.x,camera.vu.y,camera.vu.z); MakeLighting(); MakeGeometry(); } else { glMatrixMode(GL_PROJECTION); glLoadIdentity(); left = - ratio * wd2; right = ratio * wd2; top = wd2; 55 bottom = - wd2; glFrustum(left,right,bottom,top,near,far); glMatrixMode(GL_MODELVIEW); glDrawBuffer(GL_BACK); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glLoadIdentity(); gluLookAt(camera.vp.x,camera.vp.y,camera.vp.z, camera.vp.x + camera.vd.x, camera.vp.y + camera.vd.y, camera.vp.z + camera.vd.z, camera.vu.x,camera.vu.y,camera.vu.z); MakeLighting(); MakeGeometry(); } /* glFlush(); This isn't necessary for double buffers */ glutSwapBuffers(); Lưu ý thích hợp để sử dụng vị trí mắt trái không chế độ stereo Trong trường hợp mã đơn giản hóa Nó phù hợp di chuyển mono stereo điểm hai mắt sử dụng mono 3.3 Chương trình thử nghiệm + Input: Đầu vào không gian 3D, liệu mô hình 3D đầu vào bao gồm: tạo không gian gồm có mặt sàn, có để tạo thành rừng + Output: Vẫn không gian giới 3D ấy, có thêm hiệu ứng stereo, tức đeo kính hỗ trợ stereo thấy xuất hai hình ảnh đè lên nhau, nhìn vào thấy hai hình ảnh bị nhòe Còn không đeo kính nhìn mắt thường hình ảnh hình ảnh stereo, mà hình ảnh stereo chế độ mono + Chương trình cài đặt: Bước 1: Vẽ cảnh (Scene) gồm nhiều static void drawtree(float x, float y, float z) { glBegin(GL_QUADS); 56 glTexCoord2f(0.0,0.0); glVertex3f(x-1.5,y+0.0,z); glTexCoord2f(1.0,0.0); glVertex3f(x+1.5,y+0.0,z); glTexCoord2f(1.0,1.0); glVertex3f(x+1.5,y+3.0,z); glTexCoord2f(0.0,1.0); glVertex3f(x-1.5,y+3.0,z); glTexCoord2f(0.0,0.0); glVertex3f(x,y+0.0,z-1.5); glTexCoord2f(1.0,0.0); glVertex3f(x,y+0.0,z+1.5); glTexCoord2f(1.0,1.0); glVertex3f(x,y+3.0,z+1.5); glTexCoord2f(0.0,1.0); glVertex3f(x,y+3.0,z-1.5); glEnd(); } Bước 2: Vẽ hình ảnh cho mắt trái glMatrixMode(GL_MODELVIEW); glDrawBuffer(GL_BACK_LEFT); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glLoadIdentity(); gluLookAt(camera.vp.x - right.x, camera.vp.y - right.y, camera.vp.z - right.z, focus.x,focus.y,focus.z, camera.vu.x,camera.vu.y,camera.vu.z); MakeLighting(); MakeGeometry(); Bước 3: Vẽ hình ảnh cho mắt phải glMatrixMode(GL_MODELVIEW); glDrawBuffer(GL_BACK_RIGHT); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glLoadIdentity(); 57 gluLookAt(camera.vp.x + right.x, camera.vp.y + right.y, camera.vp.z + right.z, focus.x,focus.y,focus.z, camera.vu.x,camera.vu.y,camera.vu.z); MakeLighting(); MakeGeometry(); Bước 4: Kết hợp hai hình ảnh bước bước tạo hình ảnh Stereo + Kết sau cài đặt Áp dụng kỹ thuật trình bày Chương cho phép người sử dụng xem cách hiển thị hình ảnh stereo góc độ khác cách dùng phím quy ước (phím tắt) h - Bật/ tắt trợ giúp t - Tăng kích thước đốm lửa T - Giảm kích thước đốm lửa r - Tăng bán kính đốm lửa R - Giảm bán kính đốm lửa f - Bật/ tắt sương mù s - Bật/ tắt độ bóng Phím mũi tên - Xoay a - Phóng to z - Thu nhỏ (Không kiểm soát điều khiển) Các hình ảnh sau kết thử nghiệm với liệu CT demo Hình ảnh hình ảnh chế độ mono, hình ảnh chiều mà chiều mono 58 Hình Hình ảnh Stereo hiển thị Một số góc độ hiển thị khác hình ảnh Stereo: Hình Hình ảnh Stereo xoay trái 59 Hình 3 Hình ảnh Stereo xoay phải + Đánh giá kết đạt  Đã cài đặt thuật toán hiển thị Stereo  Đã cài đặt thuật toán hiển thị Mono  Máy tính chưa cài đặt hỗ trợ stereo nên hình ảnh chưa hiển thị chế độ stereo, hình ảnh chiều mono 60 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN Hiển thị hình ảnh ba chiều xu hướng tất yếu thời đại mới, đáp ứng nhu cầu đa dạng người xã hội ngày Luận văn tập trung vào nghiên cứu số vấn đề hiển thị hình ảnh ba chiều đạt số kết bước đầu sau: - Trình bày tổng quan đồ họa 3D, nguyên lý hiển thị 3D, phương pháp hiển thị 3D toán hiển thị đối tượng 3D - Hệ thống hóa số vấn đề hiển thị hình ảnh ba chiều, bao gồm: + Biểu diễn liệu 3D (biểu diễn bề mặt biểu diễn thể tích) + Hiển thị 3D: Trong phần này, học viên đưa kỹ thuật để ứng dụng vào chương trình thử nghiệm chương 3, là: kỹ thuật hiển thị Stereo kỹ thuật hiển thị hình ảnh thông qua phép chiếu - Cài đặt thử nghiệm kỹ thuật hiển thị hình ảnh stereo: + Trong chương này, học viên đưa toán ứng dụng cụ thể, sử dụng thư viện đồ họa OpenGL thư viện liên quan GLUT để giải toán “hiển thị đối tượng 3D” + Trong chương trình thử nghiệm, học viên mô tả chi tiết Input, Output toán, mô tả bước cài đặt chương trình + Đưa kết cuối sau cài đặt thử nghiệm kỹ thuật hiển thị hình ảnh stereo  Hạn chế Những nghiên cứu tập trung vào lý thuyết phần mềm, chưa tích hợp với phần cứng  Hướng phát triển Trong thời gian tới, tác giả tiếp tục phát triển vấn đề nghiên cứu luận văn là: 61 - Tìm hiểu sâu việc kết nối với phần cứng - Tìm hiểu cụ thể xây dựng ứng dụng cụ thể Sau thời gian tìm hiểu, nghiên cứu làm luận văn, dẫn trực tiếp PGS.TS Đỗ Năng Toàn, Thầy tận tình bảo hướng dẫn tìm hướng nghiên cứu, tìm kiếm tài liệu, giải vấn đề… nhờ hoàn thành luận văn cao học Ngoài ra, trình học tập, nghiên cứu thực đề tài nhận nhiều quan tâm, góp ý, hỗ trợ quý báu quý thầy cô, đồng nghiệp, bạn bè người thân Tuy nhiên, hạn chế mặt thời gian thân hạn chế mặt kiến thức nên chưa có kết thực hoàn hảo Kính mong thầy cô bạn đồng nghiệp bảo giúp đỡ 62 TÀI LIỆU THAM KHẢO Tiếng Việt [1] Lê Tấn Hùng, Huỳnh Quyết Thắng (2000), Kỹ thuật đồ họa, Nxb Khoa học Kỹ thuật [2] Đỗ Năng Toàn, Giáo trình Xử lý ảnh, Học viện Công Nghệ Bưu Chính Viễn Thông, 2010 [3] Huỳnh Quyết Thắng, Lê Tấn Hùng (2006), “Ứng dụng thư viện BK_GRAPHICS xây dựng phần mềm xử lý ảnh y học V_DOCTOR theo chuẩn DICOM” [4] Lê Hải Khôi, Đỗ Năng Toàn, Phạm Thế Anh, Trịnh Xuân Hùng, Một số vấn đề chọn lọc Công nghệ thông tin, Hải Phòng 2005 Tiếng Anh [5] Σκοπέω , Henry George Liddell, Robert Scott, A Greek-English Lexicon [6] Howard, IP; Rogers, BJ (1995) Binocular vision and stereopsis New York: Oxford University Press [7] How to Freeview Stereo images (3D) Greg Erker 2009/08/21 [8] Frank H Durgin and Dennis R Proffitt University of Virginia thomas J Olson, 2002, “Comparing Depth from Binocular Disparity with Depth from Motion” [9] Paul Bourke, November 1999, Updated May 2002, “3D Stereo Rendering Using OpenGL (and GLUT)” [10] [Gunnewiek and Vandewalle 2010] Rene Klein Gunnewiek and Patrick Vandewalle "How to Display 3D Content Realistically." Technical Report, Philips Research Laboratories, VPQM, 2010 [11] [McAllister 2006] David F McAllister "Display Technology: Stereo & 3D Display Technologies." Encyclopedia of Imaging Science and Technology, Edited by Joseph P Hornak, Wiley, 2006 63 [12] Visualization Toolkit, Insight Segmentation and Registration Toolkit, VolView : www.kitware.org [13] Ahmad Farshoukh Adel Fakih, 3D Reconstruction of Scoliotic Spines from 2D Plain Radiographs [14] Christian Wengert, 3D reconstruction from endoscopic video sequences , http://www.vision.ee.ethz.ch/~cwengert/ 64 ... sử dụng số kỹ thuật hiển thị hình ảnh chiều để ứng dụng mô mô hình 3D Một kỹ thuật kỹ thuật hiển thị Stereo, hiển thị chiều hay gọi hiển thị Stereo kỹ thuật biểu diễn đối tượng giới ba chiều lên... học viên lựa chọn đề tài Nghiên cứu kỹ thuật hiển thị hình ảnh chiều” Đối tượng phạm vi nghiên cứu - Đối tượng nghiên cứu: Mô hình đối tượng 3D máy tính - Phạm vi nghiên cứu: Đối tượng riêng lẻ... 46 Hình 29 Kính xem ảnh stereo cho người mắt 47 Hình 30 Hiển thị stereo với người hai mắt 47 Hình Hình ảnh Stereo hiển thị 59 Hình Hình ảnh Stereo xoay trái 59 Hình

Ngày đăng: 16/04/2017, 17:15

Từ khóa liên quan

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan