Luận án Nghiên cứu giải pháp đo kiểm tra đánh giá độ mòn bồn chứa xăng dầu dung tích lớn sử dụng robot mang đầu dò siêu âm
Hiện nay công nghệ đo kiểm bằng phương pháp siêu âm tổ hợp pha (PAUT)
đã và đang được ứng dụng trong việc đo kiểm đánh giá độ mòn bồn chứa xăng dầu
có độ tin cậy và hiệu quả cao. Tuy nhiên, công việc đo kiểm độ mòn bồn chứa hiện
nay vẫn đang được tiến hành một cách thủ công mất nhiều thời gian, độ chính xác
phụ thuộc vào trình độ tay nghề của kỹ thuật viên siêu âm. Ngoài ra, do phải phụ
thuộc vào các dụng cụ gá đặt, giàn giáo nên chủ yếu chỉ triển khai đo kiển tra mòn ở
một số khu vực của bồn nên không thể xây dựng được bản đồ mòn tổng thể để có
được kết quả đành giá chính xác về chất lượng của bồn. Để rút ngắn thời gian đo
kiểm đánh giá độ mòn và cho phép đánh giá tổng thể về độ mòn của bồn cũng như
từng bước tự động hoá công việc đo kiểm, luận án “Nghiên cứu giải pháp đo kiểm
tra đánh giá độ mòn bồn chứa xăng dầu dung tích lởn sử dụng robot mang đầu dò
siêu âm” đã được thực hiện định hướng các nội dung chính sau:
1. Đề xuất quy trình thực nghiệm đo độ mòn ứng dụng kỹ thuật kiểm tra siêu
âm tổ hợp pha (PAUT) sử dụng robot mang đầu dò siêu âm PA được chứng nhận để
đo độ mòn bồn chứa xăng dầu dung tích lớn.
2. Đề xuất yêu cầu kỹ thuật cho robot mang đầu dò siêu âm PA thực hiện
kiểm tra đánh giá độ mòn bồn chứa xăng dầu dung tích lớn.
3. Xác định quảng đường di chuyển ngắn nhất của robot khi tiến hành mang
đầu dò siêu âm PA kiểm tra mòn bồn chứa trên cơ sở thuật toán PSO. Kết quả tính
toán được mô phỏng trên phần mềm MATLAB và được kiểm chứng bằng thực
nghiệm trên mô hình bồn chứa.
4. Đề xuất giải pháp “quét chồng biên ảnh”, trong đó ảnh thứ (i) có biên ảnh
bên phải trùng với biên ảnh bên trái của ảnh thứ (i+1) với độ rộng 5 mm để có thể
tìm ảnh, so khớp biên ảnh xác định các ảnh liền kề nhau nhằm phục vụ cho việc
ghép ảnh xây dựng tạo lập bản đồ mòn.
5. Trên cơ sở giải pháp “quét chồng biên ảnh” và phương án đường di chuyển
ngắn nhất, đề xuất phương án điều khiển robot mang đầu dò siêu âm PA thực hiện
kiểm tra mòn để thu thập ảnh mòn C-Scan của bồn chứa kiểm tra. Bên cạnh đó, việc
chia lưới bồn chứa thành các khu vực 1000 x 1000 mm2 để triển khai công việc đov
kiểm tra siêu âm mòn có độ chính xác cao nhờ xác định, điều chỉnh chính xác tọa
độ của robot cũng như thứ tự các lượt quét, kế hoạch hoá việc đo kiểm tra siêu âm
mòn bồn chứa cũng được đề xuất.
6. Xây dựng phần mềm ghép ảnh tạo dựng bản đồ mòn ứng dụng phần mềm
MATLAB từ dữ liệu hình ảnh C-Scan thu thập được từ quá trình thực nghiệm đo
mòn bằng phương pháp kiểm tra siêu âm PA. Phần mềm cũng cung cấp tính năng
phân tích, xác định chính xác các thông số mòn như: vị trí, độ sâu và diện tích của
khuyết tật mòn.
Kết quả đo kiểm độ mòn sử dụng robot mang đầu dò siêu âm PA ứng dụng
quảng đường ngắn nhất tìm được theo thuật toán PSO được thực nghiệm kiểm tra
trên mô hình bồn chứa được chế tạo theo tiêu chuẩn API 650:2016 và phần mềm
ghép ảnh mòn đã phát triển đã mang đến các kết quả sau:
- Robot mang đầu dò PA thực hiện tốt việc di chuyển theo phương án quảng
đường ngắn nhất tìm được trên cơ sở thuật toán PSO.
- Các ảnh mòn thu thập được có chất lượng gần như tương đồng nhau đạt
95% khoảng tin cậy của phép đo;
- Giải pháp quét chồng biên ảnh giúp phần mềm ghép ảnh hoạt động hiệu
quả, nhanh chóng xác định được các ảnh kề liền nhau và xây dựng được bản đồ
mòn tổng thể;
- Kết quả phân tích đánh giá độ mòn từ phần mềm phát triển trên cơ sở các
kết quả 5 lần thực nghiệm (tương ứng 5 bản đồ mòn) gần như tương đồng nhau. Kết
quả này cũng được so sánh cho thấy đồng nhất với kết quả được thực hiện thủ công
do công ty Giải pháp Kiểm định Việt Nam (VISCO NDT) thực hiện.
Tóm tắt nội dung tài liệu: Luận án Nghiên cứu giải pháp đo kiểm tra đánh giá độ mòn bồn chứa xăng dầu dung tích lớn sử dụng robot mang đầu dò siêu âm
BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT THÀNH PHỐ HỒ CHÍ MINH ---oo0oo--- TÔ THANH TUẦN NGHIÊN CỨU GIẢI PHÁP ĐO KIỂM TRA ĐÁNH GIÁ ĐỘ MÒN BỒN CHỨA XĂNG DẦU DUNG TÍCH LỚN SỬ DỤNG ROBOT MANG ĐẦU DÒ SIÊU ÂM LUẬN ÁN TIẾN SĨ NGÀNH: KỸ THUẬT CƠ KHÍ MÃ SỐ: 9520103 Tp. Hồ Chí Minh, tháng 08/2021 BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT THÀNH PHỐ HỒ CHÍ MINH --- oOo --- TÔ THANH TUẦN NGHIÊN CỨU GIẢI PHÁP ĐO KIỂM TRA ĐÁNH GIÁ ĐỘ MÒN BỒN CHỨA XĂNG DẦU DUNG TÍCH LỚN SỬ DỤNG ROBOT MANG ĐẦU DÒ SIÊU ÂM NGÀNH: KỸ THUẬT CƠ KHÍ - 9520103 Hướng dẫn khoa học 1: PGS. TS. Đặng Thiện Ngôn Hướng dẫn khoa học 2: PGS. TS. Lê Chí Cương Phản biện 1: Phản biện 2: Phản biện 3: TP. HCM, tháng 08 năm 2021 i LÝ LỊCH CÁ NHÂN I. THÔNG TIN CÁ NHÂN - Họ và tên: Tô Thanh Tuần - Ngày sinh: 04/12/1981 - Nơi sinh: Đồng Nai - Nam/Nữ: Nam - Địa chỉ: Tổ 8, Ấp Hiền Hòa, Phước Thái, Long Thành, Đồng Nai. - Điện thoại: 0909302901 - Email: tothanhtuan81@yahoo.com - Cơ quan - nơi làm việc: Trường Cao đẳng Công nghệ Quốc tế LILAMA2 - Địa chỉ cơ quan: Km 32, QL51, Long Phước, Long Thành, Đồng Nai. II. QUÁ TRÌNH ĐÀO TẠO - Từ 2000-2005: Sinh viên ngành Thiết kế máy, Trường Đại học Sư phạm Kỹ thuật Tp. HCM. - Từ 2009-2011: Học viên cao học ngành Kỹ thuật cơ khí, Trường Đại học Sư phạm Kỹ thuật Tp. HCM. - Từ 2013 - nay: Nghiên cứu sinh ngành Kỹ thuật cơ khí, Trường Đại học Sư phạm Kỹ thuật Tp. HCM. III. QUÁ TRÌNH CÔNG TÁC - Từ 2006 – nay: Trường Cao đẳng Công nghệ Quốc tế LILAMA2. Tp. Hồ Chí Minh, ngày 30 tháng 8 năm 2021 (Ký tên và ghi rõ họ tên) Tô Thanh Tuần ii LỜI CAM ĐOAN Tôi cam đoan đây là công trình nghiên cứu của tôi. Các số liệu, kết quả nêu trong luận án là trung thực và chưa từng được ai công bố trong bất kỳ công trình nào khác. Tp. Hồ Chí Minh, ngày 30 tháng 8 năm 2021 (Ký tên và ghi rõ họ tên) Tô Thanh Tuần iii LỜI CẢM ƠN Trước tiên, tôi xin gửi lời cảm ơn sâu sắc đến các giảng viên hướng dẫn Thầy PGS.TS. Đặng Thiện Ngôn và PGS.TS. Lê Chí Cương nhờ những định hướng, gợi ý nghiên cứu hết sức quý báu, những chỉ dẫn cụ thể và những ý kiến phản biện của quý Thầy đã giúp tôi hoàn thành luận án. Một lần nữa xin được bày tỏ lòng cảm ơn sâu sắc đến quý Thầy. Xin gửi lời cảm ơn đến tất cả Thầy/Cô khoa Cơ khí Chế tạo máy trường đại học Sư phạm Kỹ thuật Tp. HCM đã truyền đạt các kiến thức nền tảng quý báu từ các học phần tiến sĩ, nhờ những kiến thức nền tảng này mà tôi mới có thể thực hiện được công việc nghiên cứu. Xin gửi lời cảm ơn đến quý Thầy/Cô trong hội đồng đánh giá chuyên đề của luận án, những ý kiến phản biện và góp ý đã giúp tôi rất nhiều trong việc chỉnh sửa và hoàn chỉnh luận án của mình. Xin gửi lời cảm ơn đến lãnh đạo trường đại học Sư phạm Kỹ thuật Tp. HCM, Khoa Cơ khí chế tạo máy, nhóm NCTĐ Kỹ thuật Cơ khí và Môi trường (REME LAB) đã hỗ trợ cho nghiên cứu sinh trong vệc nghiên cứu và thí nghiệm. Xin cám ơn Ban Giám Hiệu Trường Cao đẳng Công nghệ Quốc tế LILAMA2, các bạn bè, đồng nghiệp đã động viên, giúp đỡ và chia sẻ kinh nghiệm để tôi có thể thực hiện công việc nghiên cứu một cách thuận lợi nhất. Xin trân trọng cảm ơn công ty Giải pháp Kiểm định Việt Nam (VISCO NDT) đã hỗ trợ thiết bị NDT và tư vấn kỹ thuật cho công việc nghiên cứu và thực nghiệm. Cuối cùng xin chân thành cảm ơn gia đình và người thân luôn chia sẽ mọi khó khăn và là chỗ dựa vững chắc về vật chất lẫn tinh thần trong suốt thời gian thực hiện và hoàn thành luận án. Tp. Hồ Chí Minh, ngày 25 tháng 08 năm 2021 (Ký tên và ghi rõ họ tên) Tô Thanh Tuần iv TÓM TẮT Hiện nay công nghệ đo kiểm bằng phương pháp siêu âm tổ hợp pha (PAUT) đã và đang được ứng dụng trong việc đo kiểm đánh giá độ mòn bồn chứa xăng dầu có độ tin cậy và hiệu quả cao. Tuy nhiên, công việc đo kiểm độ mòn bồn chứa hiện nay vẫn đang được tiến hành một cách thủ công mất nhiều thời gian, độ chính xác phụ thuộc vào trình độ tay nghề của kỹ thuật viên siêu âm. Ngoài ra, do phải phụ thuộc vào các dụng cụ gá đặt, giàn giáo nên chủ yếu chỉ triển khai đo kiển tra mòn ở một số khu vực của bồn nên không thể xây dựng được bản đồ mòn tổng thể để có được kết quả đành giá chính xác về chất lượng của bồn. Để rút ngắn thời gian đo kiểm đánh giá độ mòn và cho phép đánh giá tổng thể về độ mòn của bồn cũng như từng bước tự động hoá công việc đo kiểm, luận án “Nghiên cứu giải pháp đo kiểm tra đánh giá độ mòn bồn chứa xăng dầu dung tích lởn sử dụng robot mang đầu dò siêu âm” đã được thực hiện định hướng các nội dung chính sau: 1. Đề xuất quy trình thực nghiệm đo độ mòn ứng dụng kỹ thuật kiểm tra siêu âm tổ hợp pha (PAUT) sử dụng robot mang đầu dò siêu âm PA được chứng nhận để đo độ mòn bồn chứa xăng dầu dung tích lớn. 2. Đề xuất yêu cầu kỹ thuật cho robot mang đầu dò siêu âm PA thực hiện kiểm tra đánh giá độ mòn bồn chứa xăng dầu dung tích lớn. 3. Xác định quảng đường di chuyển ngắn nhất của robot khi tiến hành mang đầu dò siêu âm PA kiểm tra mòn bồn chứa trên cơ sở thuật toán PSO. Kết quả tính toán được mô phỏng trên phần mềm MATLAB và được kiểm chứng bằng thực nghiệm trên mô hình bồn chứa. 4. Đề xuất giải pháp “quét chồng biên ảnh”, trong đó ảnh thứ (i) có biên ảnh bên phải trùng với biên ảnh bên trái của ảnh thứ (i+1) với độ rộng 5 mm để có thể tìm ảnh, so khớp biên ảnh xác định các ảnh liền kề nhau nhằm phục vụ cho việc ghép ảnh xây dựng tạo lập bản đồ mòn. 5. Trên cơ sở giải pháp “quét chồng biên ảnh” và phương án đường di chuyển ngắn nhất, đề xuất phương án điều khiển robot mang đầu dò siêu âm PA thực hiện kiểm tra mòn để thu thập ảnh mòn C-Scan của bồn chứa kiểm tra. Bên cạnh đó, việc chia lưới bồn chứa thành các khu vực 1000 x 1000 mm2 để triển khai công việc đo v kiểm tra siêu âm mòn có độ chính xác cao nhờ xác định, điều chỉnh chính xác tọa độ của robot cũng như thứ tự các lượt quét, kế hoạch hoá việc đo kiểm tra siêu âm mòn bồn chứa cũng được đề xuất. 6. Xây dựng phần mềm ghép ảnh tạo dựng bản đồ mòn ứng dụng phần mềm MATLAB từ dữ liệu hình ảnh C-Scan thu thập được từ quá trình thực nghiệm đo mòn bằng phương pháp kiểm tra siêu âm PA. Phần mềm cũng cung cấp tính năng phân tích, xác định chính xác các thông số mòn như: vị trí, độ sâu và diện tích của khuyết tật mòn. Kết quả đo kiểm độ mòn sử dụng robot mang đầu dò siêu âm PA ứng dụng quảng đường ngắn nhất tìm được theo thuật toán PSO được thực nghiệm kiểm tra trên mô hình bồn chứa được chế tạo theo tiêu chuẩn API 650:2016 và phần mềm ghép ảnh mòn đã phát triển đã mang đến các kết quả sau: - Robot mang đầu dò PA thực hiện tốt việc di chuyển theo phương án quảng đường ngắn nhất tìm được trên cơ sở thuật toán PSO. - Các ảnh mòn thu thập được có chất lượng gần như tương đồng nhau đạt 95% khoảng tin cậy của phép đo; - Giải pháp quét chồng biên ảnh giúp phần mềm ghép ảnh hoạt động hiệu quả, nhanh chóng xác định được các ảnh kề liền nhau và xây dựng được bản đồ mòn tổng thể; - Kết quả phân tích đánh giá độ mòn từ phần mềm phát triển trên cơ sở các kết quả 5 lần thực nghiệm (tương ứng 5 bản đồ mòn) gần như tương đồng nhau. Kết quả này cũng được so sánh cho thấy đồng nhất với kết quả được thực hiện thủ công do công ty Giải pháp Kiểm định Việt Nam (VISCO NDT) thực hiện. vi ABSTRACT Nowadays, Phased Array Ultrasound Testing (PAUT) has been applied in the measurement and testing the corrosion fuel tank with high reliability and efficiency. However, tank corrosion testing is still measured manually, takes a long time, the accuracy depends on the skill level of the ultrasonic technician. In addition, due to the dependence on the mounting tools, scaffolding, corrosion test is mainly deployed in some areas of the tank, so it is impossible to build a general corrosion map to get exactly results about the quality of the tank. In order to shorten the corrosion measurement and evaluation of time and allow an overall assessment of the corrosion of the tank, the thesis “Research on measurement and evaluation solution of corrosion for fuel tanks using robots carrying ultrasonic probes” was carried out with orientation of the following main contents: 1. The experimental procedure corrosion measurement proposed and applied ultrasonic technique using a robot carrying ultrasonic phased-array probe to measure the corrosion on fuel tank. 2. Proposing the technical requirements for the robot carrying the ultrasonic probe PA to perform the measurement and evaluation the corrosion of the fuel tank. 3. Determining the shortest movement distance of the robot when carrying the ultrasonic probe PA to test corrosion tank based on PSO algorithm. Calculation results were simulated on MATLAB software and verified experimentally on tank model. 4. Proposing the solution of scanning image overlap edge, the image ith has the right edge of the image to the left of the secondary image (i + 1) th with the width of 5 mm to compare edge images; Determining adjacent images for image merging to create corrosion map. 5. Basing on the solution of "scanning image overlap edge" and the shortest path planning, proposing the plan to control the robot with the ultrasonic probe PA to perform the corrosion test to collect the C-Scan corrosion image of the fuel tank. In addition, meshing the tank is divided into 1000 x 1000 mm 2 areas to deploy high accuracy corrosion ultrasonic testing by accurately identifying and vii adjusting the robot's coordinates as well as the order of scan times, and a plan for an ultrasonic tank corrosion test is also proposed. 6. Building image merging software to create corrosion maps applying MATLAB software from C-Scan image data collected from the PA ultrasonic testing method. The software also function analysis and accurate determination of corrosion parameters such as location, depth and area of corrosion defects.. The results of the corrosion test using the robot with the shortest path applied PA ultrasonic probe found according to the PSO algorithm are experimentally tested on a tank model manufactured according to API 650: 2016 and software The corrosion image merging software developed and carried the following results: - The robot with the PA probe performs well in the shortest path, which is found on the basis of the PSO algorithm. - The collected corrosion images have almost the same quality and 95% of the confidental interval of the measurement. - The image overlap edge scanning solution helps the image merging software to operate effectively, quickly identify adjacent images and build an overall corrosion map. - The results of analysis and evaluation of corrosion from software developed on the basis of 5 experimental results (corresponding to 5 corrosion maps) are almost similar. The result strongly agrees with the manual corrosion test performed by Vietnam In ... --------------------------')); end % pso main program----------------------------------------------------- -end disp(sprintf('\n')); disp(sprintf('********************************************************* ')); disp(sprintf('Final Results-----------------------------')); [bestfun,bestrun]=min(fff) best_variables=rgbest(bestrun,:) disp(sprintf('********************************************************* ')); toc % PSO convergence characteristic plot(ffmin(1:ffite(bestrun),bestrun),'-k'); xlabel('Iteration'); ylabel('Fitness function value'); title('PSO convergence characteristic') %###################################################################### #### PHỤ LỤC 4: Code Matlab tạo lập bản đồ mòn 1. Code đọc ảnh và so sánh biên ảnh function [X, map, alpha] = docanhgif(varargin) persistent cached_fmt; mlock if nargin > 0 [varargin{:}] = convertStringsToChars(varargin{:}); end [source, fmt_s, extraArgs, was_cached_fmt_used] = parse_inputs(cached_fmt, varargin{:}); was_format_specified = (nargin>=2) && ischar(varargin{2}); % Download remote file. isLegacyUrl is true if the file is on a HTTP/HTTPS % server try [isLegacyUrl, fileNameObj] = getFileFromURL(source); catch ME errorID = ME.identifier; errorID = replace(errorID, ‘getFileFromURL’, ‘imread’); throwAsCaller(Mexception(errorID, ME.message)); end % If fileNameObj is an object, extract the filename if ~ischar(fileNameObj) filename = fileNameObj.LocalFileName; else filename = fileNameObj; end if isLegacyUrl % Clean up the downloaded file. C = onCleanup(@()deleteDownload(filename)); end % Flag to indicate that the user file is on a remote location (for example: % HTTP, HTTPS, S3, Azure) isUrl = isLegacyUrl || ~ischar(fileNameObj); if isempty(fmt_s) % The format was not specified explicitly. % Get the absolute path of the file fullname = get_full_filename(filename); [~,~,ext] = fileparts(fullname); if (~isempty(cached_fmt)) && ismember(ext(2:end), cached_fmt.ext) % The format of this file is same as the last file opened with % imread. Use cached_fmt to read the file fmt_s = cached_fmt; was_cached_fmt_used = true; else % Either cached_fmt is empty or the format of this file (as % determined by the extension) is not the same as the cached % format. Call get_format_info to determine the correct format fmt_s = get_format_info(fullname); end else % The format was specified explicitly. Try % Try to obtain the absolute path of the file from the input % filename. This will throw an error if filename does not exist or % the user does not have permission to read the file fullname = get_full_filename(filename); catch % If input filename fails, try all possible extensions of this file % format to obtain the absolute path for p = 1:length(fmt_s.ext) try fullname = get_full_filename([filename, ‘.’, fmt_s.ext{p}]); % If we reach here, it means generating absolute Path % succeeded. Break out of the loop. Break; catch ME % If all possible extensions for the given format failed, % throw the last exception if p == length(fmt_s.ext) rethrow(ME); end end end end end if fmt_s.alpha && (nargout == 3) % Use the alpha channel. [X, map, alpha] = call_format_specific_reader(); else % Alpha channel is not requested or is not applicable. Alpha = []; [X, map] = call_format_specific_reader(); end cached_fmt = fmt_s; function varargout = call_format_specific_reader() try [varargout{1:nargout}] = feval(fmt_s.read, fullname, extraArgs{:}); catch ME if (~was_cached_fmt_used) || was_format_specified if isUrl msgtext = replace(ME.message, fullname, source); newME = Mexception(ME.identifier, msgtext); else newME = ME; end % The error was not caused by incorrect format throwAsCaller(newME); else % The error could have been caused by using cached format, % which was not correct for this file fmt_s = get_format_info(fullname); try [varargout{1:nargout}] = feval(fmt_s.read, fullname, extraArgs{:}); catch ME if isUrl msgtext = replace(ME.message, fullname, source); newME = Mexception(ME.identifier, msgtext); else newME = ME; end throwAsCaller(newME); end end end end end %-------------------------------------------------------------------------- function [source, fmt_s, extraArgs, was_cached_fmt_used] = parse_inputs(cached_fmt, varargin) extraArgs = {}; fmt_s = struct([]); % Flag to track if cached format was used was_cached_fmt_used = false; % Parse arguments based on their number. Switch(nargin) case {0,1} % Not allowed. Error(message(‘MATLAB:imagesci:imread:inputParsing’)); case 2 % Filename only. Source = varargin{1}; if ~ischar(source) error(message(‘MATLAB:imagesci:imread:badImageSourceDatatype’)); end otherwise % Filename and format or other arguments. Source = varargin{1}; % Check whether second argument is a format. If ischar(varargin{2}) if (~isempty(cached_fmt)) && ismember(varargin{2}, cached_fmt.ext) fmt_s = cached_fmt; was_cached_fmt_used = true; else fmt_s = imformats(varargin{2}); end end if ~isempty(fmt_s) % The argument matches a format. extraArgs = varargin(3:end); % Verify that a read function exists if (isempty(fmt_s.read)) error(message(‘MATLAB:imagesci:imread:readFunctionRegistration’, fmt_s.ext{ 1 })); end else % The argument begins the format-specific parameters. extraArgs = varargin(2:end); end end end %-------------------------------------------------------------------------- function fmt_s = get_format_info(fullname) [format, fmt_s] = imftype(fullname); if (isempty(format)) error(message(‘MATLAB:imagesci:imread:fileFormat’)); end % Verify that a read function exists if (isempty(fmt_s.read)) error(message(‘MATLAB:imagesci:imread:readFunctionRegistration’, fmt_s.ext{ 1 })); end end %------------------------------------------------------------------------- function filename = get_full_filename(filename) [fid, errmsg] = fopen(filename, ‘r’); if (fid == -1) if ~isempty(dir(filename)) % String ‘Too many open files’ is from strerror. % So, no need for a message catalog. If contains(errmsg, ‘Too many open files’) error(message(‘MATLAB:imagesci:imread:tooManyOpenFiles’, filename)); else error(message(‘MATLAB:imagesci:imread:fileReadPermission’, filename)); end else error(message(‘MATLAB:imagesci:imread:fileDoesNotExist’, filename)); end else % File exists. Get full filename. Filename = fopen(fid); fclose(fid); end end 2. Code Giao diện Phần mềm ghép ảnh function varargout = giaodien(varargin) % GIAODIEN MATLAB code for giaodien.fig % GIAODIEN, by itself, creates a new GIAODIEN or raises the existing % singleton*. % % H = GIAODIEN returns the handle to a new GIAODIEN or the handle to % the existing singleton*. % % GIAODIEN('CALLBACK',hObject,eventData,handles,...) calls the local % function named CALLBACK in GIAODIEN.M with the given input arguments. % % GIAODIEN('Property','Value',...) creates a new GIAODIEN or raises the % existing singleton*. Starting from the left, property value pairs are % applied to the GUI before giaodien_OpeningFcn gets called. An % unrecognized property name or invalid value makes property application % stop. All inputs are passed to giaodien_OpeningFcn via varargin. % % *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one % instance to run (singleton)". % % See also: GUIDE, GUIDATA, GUIHANDLES % Edit the above text to modify the response to help giaodien % Last Modified by GUIDE v2.5 06-Jul-2020 00:41:32 % Begin initialization code - DO NOT EDIT gui_Singleton = 1; gui_State = struct('gui_Name', mfilename, ... 'gui_Singleton', gui_Singleton, ... 'gui_OpeningFcn', @giaodien_OpeningFcn, ... 'gui_OutputFcn', @giaodien_OutputFcn, ... 'gui_LayoutFcn', [] , ... 'gui_Callback', []); if nargin && ischar(varargin{1}) gui_State.gui_Callback = str2func(varargin{1}); end if nargout [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); else gui_mainfcn(gui_State, varargin{:}); end % End initialization code - DO NOT EDIT % --- Executes just before giaodien is made visible. function giaodien_OpeningFcn(hObject, eventdata, handles, varargin) % This function has no output args, see OutputFcn. % hObject handle to figure % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % varargin command line arguments to giaodien (see VARARGIN) % Choose default command line output for giaodien handles.output = hObject; % Update handles structure guidata(hObject, handles); % UIWAIT makes giaodien wait for user response (see UIRESUME) % uiwait(handles.figure1); % --- Outputs from this function are returned to the command line. function varargout = giaodien_OutputFcn(hObject, eventdata, handles) % varargout cell array for returning output args (see VARARGOUT); % hObject handle to figure % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Get default command line output from handles structure varargout{1} = handles.output; % --- Executes on button press in pushbutton1. function pushbutton1_Callback(hObject, eventdata, handles) % hObject handle to pushbutton1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) close % --- Executes on button press in pushbutton2. function pushbutton2_Callback(hObject, eventdata, handles) % hObject handle to pushbutton2 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % global host_image ; duongdan = uigetdir; cd(duongdan); [I0, cmap] = imread([num2str(1) '.gif'],'frames','all'); RGB_0 = ind2rgb(I0,cmap); anhghep = vertcat(RGB_0,zeros(1,19,3)); Anh = anhghep; axes(handles.axes1) cla(handles.axes1,'reset') for i =2:30 [I, cmap] = imread([num2str(i) '.gif'],'frames','all'); % image(I); % colormap(cmap); RGB = ind2rgb(I,cmap); imshow(RGB); % [m,n,p] = size(I); pause(0.01) anhghep_moi = horzcat(Anh,RGB); Anh= anhghep_moi; % clf cla(handles.axes1,'reset') end imshow(anhghep_moi); imwrite(anhghep_moi,'Anhghep.jpg') axes(handles.axes2) imshow(rgb2gray(anhghep_moi)); % imwrite(anhghep_moi,'Anhghep.jpg') % filename = uigetfile({'*.gif;*.png'},'Chon Anh Goc'); % host_image = imread(filename); % host_image = rgb2gray(host_image);
File đính kèm:
- luan_an_nghien_cuu_giai_phap_do_kiem_tra_danh_gia_do_mon_bon.pdf
- Tom tat luan an tieng Anh TO TUAN 30_08_2021.pdf
- Tom tat luan an tieng Viet TO TUAN 30_08_2021.pdf
- Trang thong tin LA tiếng Anh TO TUAN 30_08_2021.docx
- Trang thong tin LA tiếng Việt TO TUAN 30_08_2021.docx