Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 75 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
75
Dung lượng
2,22 MB
Nội dung
i ĐẠI HỌC THÁI NGUYÊN TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG NGUYỄN QUỐC HƯNG NỘI SUY ẢNH TRONG HỖ TRỢ CHẨN ĐỐN HÌNH ẢNH LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH Thái Nguyên - 2017 download by : skknchat@gmail.com ii LỜI CAM ĐOAN Sau trình làm luận văn, với nội dung đề tài “Nội suy ảnh hỗ trợ chẩn đốn hình ảnh”, có nhiều khó khăn việc sưu tầm tài liệu, làm luận văn, đến luận văn hoàn thành với giúp đỡ, bảo tận tình PGS.TS Đỗ Năng Tồn, thầy giáo, cô giáo khoa công nghệ thông tin trường Đại học Công nghệ thông tin truyền thông – Đại học Thái Ngun Tơi xin cam đoan tồn nội dung luận văn tự sưu tầm, tra cứu thông tin mạng, số sách tham khảo xếp, hoàn thiện cho phù hợp với nội dung yêu cầu đề tài Nếu sai tơi xin hồn tồn chịu trách nhiệm Thái Nguyên, ngày 10 tháng năm 2017 Người cam đoan Nguyễn Quốc Hưng download by : skknchat@gmail.com iii LỜI CẢM ƠN Trong q trình thực luận văn, tơi nhận nhiều hướng dẫn, giúp đỡ nhiệt tình thầy cơ, gia đình, bạn bè Trước tiên, tơi xin bày tỏ lịng biết ơn sâu sắc tới thầy giáo hướng dẫn PGS.TS Đỗ Năng Tồn Trong suốt hai năm qua, tơi nhận giúp đỡ, động viên đặc biệt hướng dẫn tận tình thầy giúp tơi nắm rõ mục tiêu định hướng nghiên cứu luận văn Tôi xin gửi lời cảm ơn chân thành tới thầy giáo, cô giáo khoa công nghệ thông tin trường đại học CNTT&TT – Đại học Thái Nguyên trang bị cho thêm kiến thức quý giá suốt quãng thời gian học tập tai trường Cuối cùng, với tình cảm sâu sắc nhất, tơi xin chân thành gửi tới gia đình bạn bè, người bên, động viên, chia sẻ với tơi mặt giúp tơi hồn thành khóa học Thái Nguyên, ngày 10 tháng năm 2017 Học viên Nguyễn Quốc Hưng download by : skknchat@gmail.com iv MỤC LỤC LỜI CAM ĐOAN i LỜI CẢM ƠN iii MỤC LỤC iv DANH MỤC TỪ VIẾT TẮT vi DANH MỤC BẢNG BIỂU vii DANH MỤC HÌNH ẢNH viii MỞ ĐẦU CHƯƠNG 1: KHÁI QUÁT VỀ ẢNH Y TẾ VÀ BÀI TOÁN NỘI SUY ẢNH TRONG HỖ TRỢ CHẨN ĐỐN HÌNH ẢNH 1.1 Khái quát ảnh y tế 1.1.1 Giới thiệu ảnh y tế 1.1.2 Chuẩn ảnh y tế DICOM 1.2 Bài toán nội suy ảnh hỗ trợ chẩn đốn hình ảnh 13 1.2.1 Khái niệm nội suy ảnh 13 1.2.2 Hướng tiếp cận 16 1.2.3 Ứng dụng 18 CHƯƠNG 2: MỘT SỐ KỸ THUẬT NỘI SUY ẢNH TRONG HỖ TRỢ CHẨN ĐỐN HÌNH ẢNH 19 2.1 Kỹ thuật nội suy điểm ảnh láng giềng gần 19 2.1.1 Giới thiệu 19 2.1.2 Phương pháp 20 2.2 Kỹ thuật nội suy lát cắt dựa cải tiến phép hợp biến dạng cong 24 2.2.1 Giới thiệu 24 2.2.2 Phương pháp 26 2.3 Kỹ thuật nội suy tuyến tính 30 2.3.1 Giới thiệu 30 2.3.2 Phương pháp 30 download by : skknchat@gmail.com v 2.4 Kỹ thuật nội suy song tuyến 34 2.4.1 Giới thiệu 34 2.4.2 Phương pháp 34 CHƯƠNG 3: CHƯƠNG TRÌNH THỬ NGHIỆM 38 3.1 Bài toán 1: Nội suy sinh lát cắt trung gian 38 3.1.1 Phát biểu toán 38 3.1.2 Phân tích chương trình 39 3.1.3 Các bước triển khai 40 3.1.4 Kết chương trình thử nghiệm 44 3.2 Bài toán 2: Dựng lát cắt theo chiều dọc (hoặc chiều ngang) 46 3.2.1 Phát biểu toán 46 3.2.2 Phân tích chương trình 46 3.2.3 Các bước triển khai 47 3.2.4 Kết chương trình thử nghiệm 50 KẾT LUẬN 52 TÀI LIỆU THAM KHẢO 53 PHỤ LỤC 55 download by : skknchat@gmail.com vi DANH MỤC TỪ VIẾT TẮT ACR American College of Radiologist CCD Charge Coupled Device CT Computer Tomography DICOM Digital Imaging and Communications in Medicine IOD Information Object Definition MPR Multi Planar Reformat MRI Magentic Resonance Imaging NEMA National Electrical Manufacturers Association OSI Open Systems Interconnection PACS Picture archiving and communication system SOP Service Object Pair download by : skknchat@gmail.com vii DANH MỤC BẢNG BIỂU Bảng 1.1: Các khái niệm DICOM Bảng 1.2: Quy ước thứ tự xuất byte file DICOM 12 download by : skknchat@gmail.com viii DANH MỤC HÌNH ẢNH Hình 1.1: DICOM mơ hình tham chiếu OSI Hình 1.2: Thơng tin file DICOM Hình 1.3: Một số trường ảnh DICOM Hình 1.4: Cấu trúc file DICOM Hình 1.5: Cấu tạo Data Set Hình 2.1: Minh họa kỹ thuật nội suy điểm ảnh láng giềng gần 19 Hình 2.2: Kỹ thuật nội suy điểm ảnh láng giềng gần không gian chiều 21 Hình 2.3: Kết kỹ thuật nội suy điểm ảnh láng giềng gần không gian chiều 22 Hình 2.4: Ứng dụng kỹ thuật nội suy điểm ảnh láng giềng gần chẩn đoán bệnh lác mắt 23 Hình 2.5: Minh họa kỹ thuật nội suy lát cắt dựa cải tiến phép hợp biến dạng cong 25 Hình 2.6: Ứng dụng kỹ thuật nội suy lát cắt dựa cải tiến phép hợp biến dạng cong 29 Hình 2.7: Minh họa kỹ thuật nội suy tuyến tính theo phương pháp lặp 30 Hình 2.8: Minh họa kỹ thuật nội suy tuyến tính theo đường thẳng 31 Hình 2.9: Ứng dụng kỹ thuật nội suy tuyến tính xoay ảnh MRI 33 Hình 2.10: Ứng dụng kỹ thuật nội suy tuyến tính sinh lát cắt trung gian 33 Hình 2.11: Minh họa kỹ thuật nội suy song tuyến 34 Hình 2.12: Ứng dụng kỹ thuật nội suy song tuyến 37 Hình 3.1: Hai lát cắt liên tiếp lát cắt trung gian 38 Hình 3.2: Hai lát cắt đầu vào chương trình thử nghiệm 44 Hình 3.3: Kết chương trình thử nghiệm 44 Hình 3.4: Giao diện chương trình thử nghiệm 45 download by : skknchat@gmail.com ix Hình 3.5: Thơng tin bệnh nhân chương trình thử nghiệm 45 Hình 3.6: Giao diện chương trình thử nghiệm 50 Hình 3.7: Thơng tin bệnh nhân chương trình thử nghiệm 50 Hình 3.8: Dựng lát cắt với MPR (1) 51 Hình 3.9: Dựng lát cắt với MPR (2) 51 Hình 3.10: Dựng lát cắt với MPR (3) 51 download by : skknchat@gmail.com MỞ ĐẦU Trong năm gần công nghệ thơng tin phát triển với tốc độ chóng mặt phần cứng phần mềm Sự phát triển công nghệ thông tin thúc đẩy phát triển nhiều lĩnh vực khác xã hội y học, giáo dục, giải trí, kinh tế, … Sự phát triển phần cứng phương diện thu nhận, hiển thị, với tốc độ xử lý mở nhiều hướng cho phát triển phần mềm, đặt biệt lĩnh vực xử lý ảnh Nội suy ảnh chủ đề biến đến rộng rãi lĩnh vực xử lý ảnh có nhiều nghiên cứu chủ đề này, đặc biệt nội suy ảnh phát triển mạnh mẽ xử lý ảnh y – sinh học Trong lĩnh vực y tế, xử lý ảnh ứng dụng cách rộng rãi đem lại nhiều kết khả quan Mặt khác cịn hứa hẹn tương lai tươi sáng, với phát triển công nghệ sinh học Trong y học, chẩn đốn hình ảnh phương pháp chẩn đốn cho phép người bác sĩ quan sát hình ảnh phận thể bệnh nhân cách trực quan nhất, từ đưa chẩn đốn xác bệnh lý để có biện pháp điều trị hiệu Hình ảnh tái cấu trúc thiết bị xuất lát cắt hai chiều không gian cần chẩn đốn Các thiết bị chẩn đốn đo lường hình ảnh y học phát triển nhằm mục đích tái lại hình ảnh bên thể bệnh nhân, phân biệt phận phát tổn thương, từ giúp ích nhiều cho q trình chẩn đốn bệnh Là kỹ sư cơng tác bệnh viên đa khoa tỉnh Ninh Bình, hết em muốn tìm hiểu đóng góp phần cơng sức để giúp ích nâng cao chất lượng, phục vụ cho trình khám, chữa bệnh tốt Chính em chọn đề tài "Nội suy ảnh hỗ trợ chẩn đốn hình ảnh" làm luận văn tốt nghiệp download by : skknchat@gmail.com 52 KẾT LUẬN Với nội dung trình bày lý thuyết thực nghiệm, kết mà luận văn đạt tổng kết thành phần sau: Những kết đạt - Tìm hiểu khái quát ảnh y tế, nguyên lý tạo ảnh chuẩn lưu trữ Trình bày chi tiết cấu trúc file ảnh DICOM sử dụng ảnh y khoa - Hệ thống hóa kỹ thuật nội suy ảnh, nhận xét ưu, nhược điểm ứng dụng kỹ thuật việc hỗ trợ chẩn đốn hình ảnh - Cài đặt thực nghiệm hai kỹ thuật nội suy đại diện cho hai nhóm nghiên cứu nội suy lát cắt nội suy dựa cường độ điểm ảnh nội suy dựa đối tượng - Kết thực nghiệm đánh giá, so sánh cho thấy nhóm kỹ thuật nội suy dựa đối tượng cho hình ảnh rõ nét hơn, khắc phục vết mờ đường biên kỹ thuật nội suy dựa cường độ Hướng mở rộng nghiên cứu Độ xác kỹ thuật nội suy lát cắt tăng việc ứng dụng kỹ thuật vào q trình tái cấu trúc mơ hình 3D giống với thực tế Điều góp phần hỗ trợ tốt q trình chẩn đốn điều trị cho bệnh nhân Trong thiết bị chẩn đốn hình ảnh đại có giá thành cao, việc đầu tư rộng rãi thiết bị điều khiện nước ta chưa khả thi Do việc phát triển hướng nghiên cứu nội suy lát cắt thiết thực sát với thực tế Chính ngồi kỹ thuật nội suy trình bày luận văn, tốn nội suy sinh lát cắt trung gian cần tiếp tục nghiên cứu phát triển download by : skknchat@gmail.com 53 TÀI LIỆU THAM KHẢO Tiếng Việt [1] Lương Mạnh Bá, Nguyễn Thanh Thuỷ (1999), Nhập môn xử lý ảnh, NXB Khoa học kỹ thuật, Hà Nội [2] Phạm Việt Bình, Đỗ Năng Toàn (2008), Xử lý ảnh, NXB Khoa học kỹ thuật, Hà Nội Tiếng Anh [3] A Goshta by, D A Turner, and L V Ackerman, Jan 1992, “Matching of tomographic slices for interpolation”, IEEE Trans on medical imaging, vol 11, no 4, pp 507–16 [4] B Fischer and J Modersitzki, Mar 2004, “A unified approach to fast image registration and a new curvature based registration technique”, Linear Algebra and its Applications, vol 380, pp 107– 124 [5] J Modersitzki, Aug 2004, Numerical Methods for Image Registration (Numerical Mathematics and Scientific Computation), Oxford university press USA [6] J Leng, G Xu, and Y Zhang, 2013, “Medical image interpolation based on multi-resolution registration”, Computers & Mathematics with Applications, vol 66, no 1, pp 1–18 [7] Rorbert G.Keys, 1981, “Cubic convolution interpolation for digital image processing”, IEEE Transactions on Acoustics, Speech, and Signal Processing, vol 29, no 6, pp 1153-1160 [8] Thomas M Lehmann, Claudia Gonner, Klaus Spitzer, November 1999, “Survey: Interpolation Methods in Medical Image Processing”, IEEE Transactions on Medical Imaging, vol 18, no 11 [9] Zeyun Yu, Ahmadreza Baghaie, 2014, “Curvature-Based registration for slice interpolation of medical image ”, Computational Modeling of Objects download by : skknchat@gmail.com 54 Presented in Images Fundamentals, Methods, and Applications Lecture Notes in Computer Science , Springer,Volume 8641, pp 69-80 Trang WEB http://chrisk91.me/2016/10/30/Pixels.html http://prgmobileapps.com/AppUpdates/ors/Abstracts/abs1598.html http://people.cas.sc.edu/rorden/dicom/index.html https://vi.wikipedia.org/wiki/DICOM https://en.wikipedia.org/wiki/Nearest-neighbor_interpolation https://en.wikipedia.org/wiki/Linear_interpolation https://en.wikipedia.org/wiki/Bilinear_interpolation download by : skknchat@gmail.com 55 PHỤ LỤC Hàm hiển thị tập tin DICOM private void ReadAndDisplayDicomFile(string fileName, string fileNameOnly) { ddRe.DicomFileName = fileName; //MessageBox.Show(ddRe.DicomFileName); TypeOfDicomFile typeOfDicomFile = ddRe.typeofDicomFile; if (typeOfDicomFile == TypeOfDicomFile.Dicom3File || typeOfDicomFile == TypeOfDicomFile.DicomOldTypeFile) { imageWidth = ddRe.width; imageHeight = ddRe.height; bitDepth = ddRe.bitsAllocated; winCentre = ddRe.windowCentre; winWidth = ddRe.windowWidth; samplesPerPixel = ddRe.samplesPerPixel; signedImage = ddRe.signedImage; label1.Visible = true; label2.Visible = true; label3.Visible = true; label4.Visible = true; //bnSave.Enabled = true; //bnTags.Enabled = true; //bnResetWL.Enabled = true; label2.Text = imageWidth.ToString() + " X " + imageHeight.ToString(); download by : skknchat@gmail.com 56 if (samplesPerPixel == 1) label4.Text = bitDepth.ToString() + " bit"; else label4.Text = bitDepth.ToString() + " bit, " + samplesPerPixel + " samples per pixel"; imagePanelControl.NewImage = true; Text = "DICOM Image Viewer: " + fileNameOnly; if (samplesPerPixel == && bitDepth == 8) { pixels8.Clear(); pixels16.Clear(); if (ddRe.signedImage) pixels24.Clear(); ddRe.GetPixels8(ref pixels8); minPixelValue = pixels8.Min(); maxPixelValue = pixels8.Max(); if (ddRe.signedImage) { winCentre -= char.MinValue; } if (Math.Abs(winWidth) < 0.001) { winWidth = maxPixelValue - minPixelValue; } if ((winCentre == 0) || download by : skknchat@gmail.com 57 (minPixelValue > winCentre) || (maxPixelValue < winCentre)) { winCentre = (maxPixelValue + minPixelValue) / 2; } imagePanelControl.SetParameters(ref pixels8, imageWidth, imageHeight, winWidth, winCentre, samplesPerPixel, true, this); } if (samplesPerPixel == && bitDepth == 16) { pixels16.Clear(); pixels8.Clear(); pixels24.Clear(); ddRe.GetPixels16(ref pixels16); minPixelValue = pixels16.Min(); maxPixelValue = pixels16.Max(); if (ddRe.signedImage) { winCentre -= short.MinValue; } if (Math.Abs(winWidth) < 0.001) { winWidth = maxPixelValue - minPixelValue; } download by : skknchat@gmail.com 58 if ((winCentre == 0) || (minPixelValue > winCentre) || (maxPixelValue < winCentre)) { winCentre = (maxPixelValue + minPixelValue) / 2; } imagePanelControl.Signed16Image = ddRe.signedImage; imagePanelControl.SetParameters(ref pixels16, imageWidth, imageHeight, winWidth, winCentre, true, this); } if (samplesPerPixel == && bitDepth == 8) { // This is an RGB colour image pixels8.Clear(); pixels16.Clear(); pixels24.Clear(); ddRe.GetPixels24(ref pixels24); imagePanelControl.SetParameters(ref pixels24, imageWidth, imageHeight, winWidth, winCentre, samplesPerPixel, true, this); } } else { download by : skknchat@gmail.com 59 if (typeOfDicomFile == TypeOfDicomFile.DicomUnknownTransferSyntax) { MessageBox.Show("Sorry, I can't read a DICOM file with this Transfer Syntax.", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning); } else { MessageBox.Show("Sorry, I can't open this file " + "This file does not appear to contain a DICOM image.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } Text = "DICOM Image Viewer: "; // Show a plain grayscale image instead pixels8.Clear(); pixels16.Clear(); pixels24.Clear(); samplesPerPixel = 1; imageWidth = imagePanelControl.Width - 25; imageHeight = imagePanelControl.Height - 25; int iNoPix = imageWidth * imageHeight; for (int i = 0; i < iNoPix; ++i) { pixels8.Add(240); download by : skknchat@gmail.com 60 } winWidth = 256; winCentre = 127; imagePanelControl.SetParameters(ref pixels8, imageWidth, imageHeight, winWidth, winCentre, samplesPerPixel, true, this); imagePanelControl.Invalidate(); label1.Visible = false; label2.Visible = false; label3.Visible = false; label4.Visible = false; //bnSave.Enabled = false; //bnTags.Enabled = false; //bnResetWL.Enabled = false; } } Hàm tính lát cắt nội suy theo kỹ thuật nội suy tuyến tính private void btPolation_Click(object sender, EventArgs e) { int i; imagePanelControl2.NewImage = true; if ((imageOpened1 == true) && (imageOpened == true )) { if (samplesPerPixel == && bitDepth == 8) { List px8Ta = ddTa.pixels8; List px8Re = ddRe.pixels8; download by : skknchat@gmail.com 61 List px8 = new List(); for (i = 0; i < px8Ta.Count; i++) { byte pi = (byte)((px8Ta[i] + px8Re[i]) / 2); px8.Add(pi); } minPixelValue = px8.Min(); maxPixelValue = px8.Max(); if (ddTa.signedImage) { winCentre -= char.MinValue; } if (Math.Abs(winWidth) < 0.001) { winWidth = maxPixelValue - minPixelValue; } if ((winCentre == 0) || (minPixelValue > winCentre) || (maxPixelValue < winCentre)) { winCentre = (maxPixelValue + minPixelValue) / 2; } download by : skknchat@gmail.com 62 imagePanelControl2.SetParameters(ref px8, imageWidth, imageHeight, winWidth, winCentre, samplesPerPixel, true, this); } if (samplesPerPixel == && bitDepth == 16) { List px16Ta = ddTa.pixels16; List px16Re = ddRe.pixels16; pxPo16 = new List(); for (i = 0; i < px16Re.Count; i++) { ushort pi = (ushort)((px16Re[i] + px16Ta[i]) / 2); pxPo16.Add(pi); } minPixelValue = pxPo16.Min(); maxPixelValue = pxPo16.Max(); if (ddTa.signedImage) { winCentre -= short.MinValue; } if (Math.Abs(winWidth) < 0.001) { download by : skknchat@gmail.com 63 winWidth = maxPixelValue - minPixelValue; } if ((winCentre == 0) || (minPixelValue > winCentre) || (maxPixelValue < winCentre)) { winCentre = (maxPixelValue + minPixelValue) / 2; } imagePanelControl2.Signed16Image = ddTa.signedImage; imagePanelControl2.SetParameters(ref pxPo16, imageWidth, imageHeight, winWidth, winCentre, true, this); } if (samplesPerPixel == && bitDepth == 8) { // This is an RGB colour image List px24Ta = ddTa.pixels24; List px24Re = ddRe.pixels24; List px24 = new List(); for (i = 0; i < px24Re.Count; i++) { byte pi = (byte)((px24Re[i] + px24Ta[i]) / 2); px24.Add(pi); } download by : skknchat@gmail.com 64 imagePanelControl2.SetParameters(ref px24, imageWidth, imageHeight, winWidth, winCentre, samplesPerPixel, true, this); } } } Hàm tính lát cắt nội suy theo kỹ thuật nội suy lát cắt dựa cải tiến phép hợp biến dạng cong private void btnRes_Click(object sender, EventArgs e) { imageWidth = ddRe.width; imageHeight = ddRe.height; bitDepth = ddRe.bitsAllocated; winCentre = ddRe.windowCentre; winWidth = ddRe.windowWidth; samplesPerPixel = ddRe.samplesPerPixel; signedImage = ddRe.signedImage; label1.Visible = true; label2.Visible = true; label3.Visible = true; label4.Visible = true; //bnSave.Enabled = true; //bnTags.Enabled = true; //bnResetWL.Enabled = true; //label2.Text = imageWidth.ToString() + " X " + imageHeight.ToString(); //if (samplesPerPixel == 1) // label4.Text = bitDepth.ToString() + " bit"; download by : skknchat@gmail.com 65 //else // label4.Text = bitDepth.ToString() + " bit, " + samplesPerPixel + // " samples per pixel"; imagePanelControl3.NewImage = true; //pixels16.Clear(); //pixels8.Clear(); //pixels24.Clear(); //ddRe.GetPixels16(ref pixels16); List px16Ta = ddTa.pixels16; List px16Re = ddRe.pixels16; px16 = new List(); for (int i = 0; i < px16Re.Count; i++) { double p = 0.7; ushort pi = (ushort)(px16Re[i]*p + (1p)*px16Ta[i]); px16.Add(pi); } minPixelValue = px16.Min(); maxPixelValue = px16.Max(); if (ddRe.signedImage) { winCentre -= short.MinValue; } if (Math.Abs(winWidth) < 0.001) download by : skknchat@gmail.com 66 { winWidth = maxPixelValue - minPixelValue; } if ((winCentre == 0) || (minPixelValue > winCentre) || (maxPixelValue < winCentre)) { winCentre = (maxPixelValue + minPixelValue) / 2; } imagePanelControl3.Signed16Image = ddRe.signedImage; imagePanelControl3.SetParameters(ref px16, imageWidth, imageHeight, winWidth, winCentre, true, this); } download by : skknchat@gmail.com ... bày toán nội suy ảnh hỗ trợ chẩn đốn hình ảnh, hướng tiếp cận ứng dụng kỹ thuật nội suy ảnh hỗ trợ chẩn đốn hình ảnh Chương 2: Một số kỹ thuật nội suy ảnh hỗ trợ chẩn đốn hình ảnh Nội dung chương... THUẬT NỘI SUY ẢNH TRONG HỖ TRỢ CHẨN ĐỐN HÌNH ẢNH 2.1 Kỹ thuật nội suy điểm ảnh láng giềng gần 2.1.1 Giới thiệu Trong kỹ thuật nội suy nhằm tăng cường độ phân giải phóng to ảnh kỹ thuật nội suy. .. tài "Nội suy ảnh hỗ trợ chẩn đốn hình ảnh" làm luận văn tốt nghiệp download by : skknchat@gmail.com Nội dung luận văn đề cập đến vấn đề nội suy ảnh toán nội suy sinh lát cắt trung gian xử lý ảnh