Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 140 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
140
Dung lượng
3,96 MB
Nội dung
Đại Học Quốc Gia Tp Hồ Chí Minh TRƯỜNG ĐẠI HỌC BÁCH KHOA NGUYỄN TRỌNG KHOA GIẢI PHÁP TIẾT KIỆM MỰC IN TRÊN CƠ SỞ TỔNG HỢP CÁC MÀU CÓ SẴN CHO PHƯƠNG PHÁP IN OFFSET TỜ RỜI Chuyên ngành: KỸ THUẬT LASER LUẬN VĂN THẠC SĨ TP HỒ CHÍ MINH, tháng 07 năm 2006 CƠNG TRÌNH ĐƯỢC HỒN THÀNH TẠI TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH Cán hướng dẫn khoa học : TS ĐINH SƠN THẠCH CHỮ KÝ Cán chấm nhận xét : CHỮ KÝ Cán chấm nhận xét : CHỮ KÝ Luận văn thạc sĩ bảo vệ tại: HỘI ĐỒNG CHẤM BẢO VỆ LUẬN VĂN THẠC SĨ TRƯỜNG ĐẠI HỌC BÁCH KHOA, ngày tháng năm LỜI CẢM ƠN Đầu tiên, em chân thành gửi lời cảm ơn sâu sắc đến Thầy Đinh Sơn Thạch, người tận tình hướng dẫn, giúp đỡ cho nhận xét quí báu trình thực luận văn Xin gửi lời cảm ơn đến Thầy Ngô Anh Tuấn, Trưởng Khoa Kỹ Thuật In Trường Đại Học Sư Phạm Kỹ Thuật, góp ý cho đề tài, đặc biệt tạo điều kiện tốt để em hồn thành phần thực nghiệm phịng thí nghiệm xưởng in Khoa Xin gửi lời cảm ơn đến tất thầy cô bạn sinh viên Khoa Kỹ Thuật In giúp đỡ trình thực luận văn Đặc biệt, em xin gửi chân tình đến Thầy Giang, Thầy Long, anh Định, anh Toàn, bạn Hỷ, bạn Vỹ Những người giúp đỡ em tận tình trình lấy mẫu in tiến hành đo đạc Xin gửi lời cảm ơn đến Thầy, Cơ Khoa Khoa Học Ứng Dụng tận tình bảo giảng dạy em suốt trình học tập Cuối cùng, không nhắc đến lời động viên, giúp đỡ bố mẹ, em gái bạn bè suốt trình học tập hồn thành luận văn TĨM TẮT Trong luận văn này, đầu tiên, chúng tơi trình bày sở lý thuyết màu, cách thành lập không gian màu CIE không gian màu CIE-L*a*b* dùng công nghệ in Sau đó, chúng tơi trình bày tổng quan bốn mơ hình vật lý sử dụng để phục chế màu in ấn Mơ hình KubelkaMunk trình bày kĩ phạm vi vận dụng mở rộng cho nhiều ngành khác Đối với in Offset, chúng tơi khảo sát ba mơ hình vật lý Đầu tiên, giải thuật tìm hệ số hiệu chỉnh Yule-Nielse cho phương trình Murray-Davies thành lập so sánh với thực nghiệm Với mơ hình Negebauer, chúng tơi khảo sát hệ số Yule-Nielsen từ giá trị 1.1 đến ứng với bậc tăng 0.1 Trong mơ hình Kubelka-Munk, vận dụng cho phương pháp in Offset với mực pha, chúng tơi đưa phương pháp tìm hệ số hấp thụ K tán xạ S mực in bất kì, đồng thời kiểm tra tính đắn mơ hình cho mẫu mực pha từ ba loại mực Cyan, Yellow, Magenta Từ đó, chúng tơi đưa giải pháp nhằm tái sử dụng mực pha dư Cuối cùng, xây dựng số chương trình nhỏ viết Matlab 7.0 sử dụng xuởng in CHƯƠNG V CHƯƠNG TRÌNH ỨNG DỤNG TÌM TỈ LỆ IN TRONG IN OFFSET 82 V.1 Chương Trình Murray-Davies 83 V.2 Chương Trình Neugebauer .84 V.3 Chuơng Trình Kubelka-Munk 85 CHƯƠNG VI KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 87 V.1 Kết Luận 87 V.2 Hướng Phát Triển 88 TÀI LIỆU THAM KHẢO PHỤ LỤC A1 PHỤ LỤC A2 PHỤ LỤC B DANH MỤC CÁC BẢNG ******** Bảng IV.1 Bảng giá trị Yule-Nielsen n cho phương trình Murray-Davies 54 Bảng IV.2 Bảng giá trị sai lệch màu sắc sau hiệu chỉnh .55 BảngIV.3a Bảng giá trị sai biệt màu mẫu in chồng với tỉ lệ khác 59 BảngIV.3b Bảng giá trị sai biệt màu mẫu in chồng với tỉ lệ khác 59 BảngIV.3c Bảng giá trị sai biệt màu mẫu in chồng với tỉ lệ khác 60 BảngIV.4 Bảng giá trị K,S cho mực CMYK hãng BesTack .69 Bảng IV.5 Giá trị sai lệch màu sắc Lý thuyết K-M cho loại mực nguyên gốc 74 Bảng IV.6 Bảng giá trị tỉ lệ mẫu màu cần pha .77 Bảng IV.7 Bảng giá trị độ sai lệch màu màu ban đầu cần tái tạo màu in 77 DANH MỤC CÁC HÌNH ******** CHƯƠNG I MỞ ĐẦU CHƯƠNG II CƠ SỞ LÝ THUYẾT MÀU Hình II.1: Các thành phần tông màu liên tục biểu diễn vịng trịn màu tóm lượt Hình II.2: Các thành phần độ bão hoà màu trục tông màu MagentaGreen Hình II.3 Các thành phần độ sáng màu Green .7 Hình II.4 Mặt cắt ngang qua tâm mắt người Hình II.5 Hình phóng lớn khu vực B hình II.4 Hình II.6 Hình phóng lớn khu vực đóng khung hình II.5 .10 Hình II.7 Đường cong phổ ba loại mực Magenta khác nhau(bên dưới) ba loại giấy (bên trên) 12 Hình II.8 Mơ tả phản xạ tia sáng chiếu đến phụ thuộc vào độ phẳng bề mặt 13 Hình II.9 Nguyên lý tổng hợp màu cộng 15 Hình II.10 Hình phóng đại phát quang màu Red, Green, Blue 16 Hình II.11 Nguyên lý tổng hợp màu trừ .17 Hình II.12 Nguyên lý tổng hợp màu tương hỗ 19 Hình II.13 Sơ đồ mơ tả màu thứ cấp 20 Hình II.14 Tam giác màu 21 Hình II.15 Màu Yellow từ khiết giảm trắng hẳn .21 Hình II.16 Điểm khơng màu tam giác màu .22 Hình II.17 Khơng gian màu RGB .23 Hình II.18: Hình phác thảo thí nghiệm Wrigh Guild vào 1930 .24 Hình II.19 Ba hàm hoà hợp màu(CMF) r ( λ ) , g ( λ ) , b ( λ ) với góc quan sát 20 25 Hình II.20 Ba hàm hồ hợp màu x ( λ ) , y ( λ ) , z ( λ ) 28 Hình II.21 Biểu đồ màu CIE1931 .28 HìnhII.22 Sự phân bố khơng hài hồ nhận thức màu biểu đồ màu CIE 29 Hình II.23 Khoảng màu phục chế Tivi trình in màu biểu đồ màu [9] 29 Hình II.24 Mơ tả đơn giản khơng gian màu CIEL*a*b* 31 Hình II.25 Mặt phẳng màu khơng gian màu CIEL*a*b* 32 Hình II.26 Biểu thị sai biệt màu không gian màu CIEL*a*b* 32 CHƯƠNG III TỔNG QUAN VỀ MÔ HÌNH DỰ ĐỐN PHỔ MÀU Hình III.1: Sự tăng giảm kích thước điểm tram phương diện học 34 Hình III.2 Mơ tả truyền ánh sáng vào lớp mực in tram 36 Hình III.3 Sơ đồ truyền ánh sáng môi trường hấp thụ tán xạ 40 Hình III.4 Sơ đồ biểu thị tán xạ hấp thụ lý thuyết K-M .42 Hình III.5 Hình phát thảo lớp mực in lên nên giấy 46 function initialize_gui(fig_handle, handles, isreset) if isfield(handles, 'metricdata') && ~isreset return; end handles.metricdata.giatriL= 0; handles.metricdata.giatriA = 0; handles.metricdata.giatriB= 0; %handles.trunggian =1; set(handles.giatriL, 'String', handles.metricdata.giatriL); set(handles.giatriA, 'String', handles.metricdata.giatriA); set(handles.giatriB, 'String', handles.metricdata.giatriB); set(handles.tiletram, 'String', 0); set(handles.text17, 'String', 0); set(handles.unitgroup, 'SelectedObject', handles.cyan); set(handles.text5, 'String', 'mau can phuc che'); set(handles.text6, 'String', 'mau du kien'); set(handles.text6,'BackgroundColor',[1 1]); set(handles.text5,'BackgroundColor',[1 1]); % Update handles structure guidata(handles.figure1, handles); -CHƯƠNG TRÌNH TÍNH TỐN VỚI MƠ HÌNH NEUGEBAUER function varargout = Giaodien_Neugebauer(varargin) GIAODIEN_NEUGEBAUER('CALLBACK',hObject,eventData,handles, ) calls the local gui_Singleton = 1; gui_State = struct('gui_Name', mfilename, 'gui_Singleton', gui_Singleton, 'gui_OpeningFcn', @Giaodien_Neugebauer_OpeningFcn, 'gui_OutputFcn', @Giaodien_Neugebauer_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 function Giaodien_Neugebauer_OpeningFcn(hObject, eventdata, handles, varargin) % Choose default command line output for Giaodien_Neugebauer handles.output = hObject; % Update handles structure guidata(hObject, handles); initialize_gui(hObject, handles, false); % UIWAIT makes Giaodien_Neugebauer wait for user response (see UIRESUME) % uiwait(handles.figure1); % - Outputs from this function are returned to the command line function varargout = Giaodien_Neugebauer_OutputFcn(hObject, eventdata, handles) varargout{1} = handles.output; % - Executes during object creation, after setting all properties function giatriL_CreateFcn(hObject, eventdata, handles) % hObject handle to density (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: edit controls usually have a white background, change % 'usewhitebg' to to use default See ISPC and COMPUTER usewhitebg = 1; if usewhitebg set(hObject,'BackgroundColor','white'); else set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')); end function giatriL_Callback(hObject, eventdata, handles) % hObject handle to density (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of density as text % str2double(get(hObject,'String')) returns contents of density as a double giatriL = str2double(get(hObject, 'String')); if isnan(giatriL) set(hObject, 'String', 0); errordlg('Ban Phai Nhap Vao Mot So','LOI'); end % Save the new density value handles.metricdata.giatriL = giatriL; guidata(hObject,handles) % - Executes during object creation, after setting all properties function giatriA_CreateFcn(hObject, eventdata, handles) usewhitebg = 1; if usewhitebg set(hObject,'BackgroundColor','white'); else set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')); end function giatriA_Callback(hObject, eventdata, handles) % hObject handle to volume (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of volume as text % str2double(get(hObject,'String')) returns contents of volume as a double giatriA = str2double(get(hObject, 'String')); if isnan(giatriA) set(hObject, 'String', 0); errordlg('Ban Phai Nhap so','LOI'); end handles.metricdata.giatriA=giatriA; guidata(hObject,handles) function giatriB_CreateFcn(hObject, eventdata, handles) usewhitebg = 1; if usewhitebg set(hObject,'BackgroundColor','white'); else set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')); end % - Executes during object creation, after setting all properties function giatriB_Callback(hObject, eventdata, handles) giatriB = str2double(get(hObject, 'String')); if isnan(giatriB) set(hObject, 'String', 0); errordlg('Ban Phai Nhap so','LOI'); end handles.metricdata.giatriB=giatriB; guidata(hObject,handles) function unitgroup_SelectionChangeFcn(hObject, eventdata, handles) if (hObject==handles.cyan) set(handles.text6, 'String', 'ban chon muc cyan'); elseif (hObject == handles.magenta) set(handles.text6, 'String', 'ban chon muc magenta'); else set(handles.text6, 'String', 'ban chon muc yellow'); end guidata(hObject,handles) % - Executes on button press in calculate function calculate_Callback(hObject,eventdata, handles) clc %cho dung de tinh ti le tram lab_goc(1,:)=handles.metricdata.giatriL; lab_goc(2,:)=handles.metricdata.giatriA; lab_goc(3,:)=handles.metricdata.giatriB; load tile_cmy.txt; r_goc=lab2r(lab_goc); lambda=[400:10:700]'; load thuvien_lab_apex.txt; load thuvien_neugebauer_apex.txt; r_nguon=thuvien_neugebauer_apex; lab_goc=lab_goc'; lab_nguon=thuvien_lab_apex; for i=1:9261 delta(:,i)=cielabde(lab_goc,lab_nguon(:,i)'); end nhonhat=min(delta); for i=1:9261 if delta(:,i)==min(delta) a=i; end end tile=tile_cmy(:,a); plot(lambda, r_nguon(:,a),'r',lambda, r_goc,'b'); set(handles.cyan,'string',tile(1,:)); set(handles.magenta,'string',tile(2,:)); set(handles.Yellow,'string',tile(3,:)); nhonhat; set(handles.text17,'string',delta(:,a)); sRGB1=lab2srgb(lab_goc)./255; sRGB2=lab2srgb(lab_nguon(:,a))./255; set(handles.text6,'BackgroundColor',sRGB2); set(handles.text5,'BackgroundColor',sRGB1); function reset_Callback(hObject, eventdata, handles) % hObject handle to reset (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) initialize_gui(gcbf, handles, true); function initialize_gui(fig_handle, handles, isreset) % If the metricdata field is present and the reset flag is false, it means % we are we are just re-initializing a GUI by calling it from the cmd line % while it is up So, bail out as we dont want to reset the data if isfield(handles, 'metricdata') && ~isreset return; end handles.metricdata.giatriL= 0; handles.metricdata.giatriA = 0; handles.metricdata.giatriB= 0; %handles.trunggian =1; set(handles.giatriL, 'String', handles.metricdata.giatriL); set(handles.giatriA, 'String', handles.metricdata.giatriA); set(handles.giatriB, 'String', handles.metricdata.giatriB); set(handles.text17, 'String', 0); set(handles.unitgroup, 'SelectedObject', handles.cyan); set(handles.text5, 'String', 'mau can phuc che'); set(handles.text6, 'String', 'mau du kien'); set(handles.text6,'BackgroundColor',[1 1]); set(handles.text5,'BackgroundColor',[1 1]); set(handles.cyan,'String',0); set(handles.magenta,'String',0); set(handles.Yellow,'String',0); guidata(handles.figure1, handles); -CHƯƠNG TRÌNH TÍNH TỐN VỚI MẪU KUBELKA-MUNK -function varargout = Giaodien_kubelkamunk(varargin) GIAODIEN_KUBELKAMUNK('CALLBACK',hObject,eventData,handles, ) calls the local gui_Singleton = 1; gui_State = struct('gui_Name', mfilename, 'gui_Singleton', gui_Singleton, 'gui_OpeningFcn', @Giaodien_kubelkamunk_OpeningFcn, 'gui_OutputFcn', @Giaodien_kubelkamunk_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_kubelkamunk is made visible function Giaodien_kubelkamunk_OpeningFcn(hObject, eventdata, handles, varargin) handles.output = hObject; % Update handles structure guidata(hObject, handles); initialize_gui(hObject, handles, false); % UIWAIT makes Giaodien_kubelkamunk wait for user response (see UIRESUME) % uiwait(handles.figure1); % - Outputs from this function are returned to the command line function varargout = Giaodien_kubelkamunk_OutputFcn(hObject, eventdata, handles) varargout{1} = handles.output; % - Executes during object creation, after setting all properties function giatriL_CreateFcn(hObject, eventdata, handles) usewhitebg = 1; if usewhitebg set(hObject,'BackgroundColor','white'); else set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')); end function giatriL_Callback(hObject, eventdata, handles) giatriL = str2double(get(hObject, 'String')); if isnan(giatriL) set(hObject, 'String', 0); errordlg('Ban Phai Nhap Vao Mot So','LOI'); end % Save the new density value handles.metricdata.giatriL = giatriL; guidata(hObject,handles) % - Executes during object creation, after setting all properties function giatriA_CreateFcn(hObject, eventdata, handles) usewhitebg = 1; if usewhitebg set(hObject,'BackgroundColor','white'); else set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')); end function giatriA_Callback(hObject, eventdata, handles) % hObject handle to volume (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of volume as text % str2double(get(hObject,'String')) returns contents of volume as a double giatriA = str2double(get(hObject, 'String')); if isnan(giatriA) set(hObject, 'String', 0); errordlg('Ban Phai Nhap so','LOI'); end % Save the new volume value handles.metricdata.giatriA=giatriA; guidata(hObject,handles) function giatriB_CreateFcn(hObject, eventdata, handles) usewhitebg = 1; if usewhitebg set(hObject,'BackgroundColor','white'); else set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')); end % - Executes during object creation, after setting all properties function giatriB_Callback(hObject, eventdata, handles) giatriB = str2double(get(hObject, 'String')); % Hint: edit controls usually have a white background on Windows % See ISPC and COMPUTER if isnan(giatriB) set(hObject, 'String', 0); errordlg('Ban Phai Nhap so','LOI'); end handles.metricdata.giatriB=giatriB; guidata(hObject,handles) function unitgroup_SelectionChangeFcn(hObject, eventdata, handles) % hObject handle to unitgroup (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) if (hObject==handles.cyan) %set(handles.trunggian, 'String', 1); set(handles.text6, 'String', 'ban chon muc cyan'); elseif (hObject == handles.magenta) set(handles.text6, 'String', 'ban chon muc magenta'); %set(handles.trunggian, 'String', 2); else %set(handles.trunggian, 'String', 3); set(handles.text6, 'String', 'ban chon muc yellow'); end guidata(hObject,handles) % - Executes on button press in calculate function calculate_Callback(hObject,eventdata, handles) clc %cho dung de tinh ti le tram lab_goc(1,:)=handles.metricdata.giatriL; lab_goc(2,:)=handles.metricdata.giatriA; lab_goc(3,:)=handles.metricdata.giatriB; load du_ks.txt load white_b.txt r_goc=lab2r(lab_goc); r_goc=r_goc'; lambda=[400:10:700]'; %kiem tra tu tao tile=[]; ks=du_ks; r_g=white_b; r_goc=saunder(r_goc); r_g=saunder(r_g); for i=1:1 k(:,i)=0.5*(log(r_g)-log(r_goc));% A=[ks(:,1) ks(:,3) ks(:,5)]; B=k(:,i); %***************** [M,N] = size(A); if size(B,1) ~= M error('Incompatible dimension of A and B in lin_eq()') end if M == N, x = A^-1*B; %x = inv(A)*B or gaussj(A,B); %Eq.(2.1.1) elseif M < N %Minimum-norm solution (2.1.7) x = pinv(A)*B; %A’*(A*A’)^-1*B; or eye(size(A,2))/A*B else %LSE solution (2.1.10) for M > N x = pinv(A)*B; %(A’*A)^-1*A’*B or x = A\B end tile=x; end tile=tile; %r_g=asaunder(r_g); r_uoc=r_g.*exp(-2*k(:,1)); %r_uoc=asaunder(r_uoc) lab_nguon=r2lab(r_uoc); lab_goc=r2lab(r_goc); delta=cielabde(lab_nguon,lab_goc); plot(lambda, r_uoc,'r',lambda, r_goc,'b'); c=tile(1,:)/sum(tile)*100; m=tile(2,:)/sum(tile)*100; y=tile(3,:)/sum(tile)*100; set(handles.cyan,'string',c); set(handles.magenta,'string',m); set(handles.Yellow,'string',y); set(handles.text17,'string',delta); sRGB1=lab2srgb(lab_goc)./255; sRGB2=lab2srgb(lab_nguon)./255; set(handles.text6,'BackgroundColor',sRGB2); set(handles.text5,'BackgroundColor',sRGB1); clear all; % - Executes on button press in reset function reset_Callback(hObject, eventdata, handles) % hObject handle to reset (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) initialize_gui(gcbf, handles, true); function initialize_gui(fig_handle, handles, isreset) % If the metricdata field is present and the reset flag is false, it means % we are we are just re-initializing a GUI by calling it from the cmd line % while it is up So, bail out as we dont want to reset the data if isfield(handles, 'metricdata') && ~isreset return; end handles.metricdata.giatriL= 0; handles.metricdata.giatriA = 0; handles.metricdata.giatriB= 0; %handles.trunggian =1; set(handles.giatriL, 'String', handles.metricdata.giatriL); set(handles.giatriA, 'String', handles.metricdata.giatriA); set(handles.giatriB, 'String', handles.metricdata.giatriB); set(handles.text17, 'String', 0); set(handles.unitgroup, 'SelectedObject', handles.cyan); set(handles.text5, 'String', 'mau can phuc che'); set(handles.text6, 'String', 'mau du kien'); set(handles.text6,'BackgroundColor',[1 1]); set(handles.text5,'BackgroundColor',[1 1]); set(handles.cyan,'String',0); set(handles.magenta,'String',0); set(handles.Yellow,'String',0); %set(handles.axes,'String',0); guidata(handles.figure1, handles); -Chương trình tính tốn hệ số Yule-Nielsen Phương trình Murray-Davies -function f=heso_n_cyan(n) clc; %lấy giá trị phổ giấy load trang_nen.txt rg=trang_nen; % lấy giá trị in mẫu để hiệu chỉnh; load tram_cyan.txt; ra=tram_cyan; R_c=ra(:,10); a=[0.10 0.20 0.30 0.40 0.50 0.60 0.70 0.80 0.90]; f=0; %giá trị trung bình bình phương f dùng để hiệu chỉnh for i=1:9 b=((1-a(:,i))*rg.^(1/n)+a(:,i)*R_c.^(1/n)).^(n); s=rms(tram_cyan(:,i),b); f=s+f; end end function heso_n_murray load tram_cyan.txt; load tram_mag.txt; load tram_yellow.txt; load tram_black.txt; load trang_nen.txt; lambda=[400:10:700]'; rg=trang_nen; r=tram_cyan; R_c=tram_cyan(:,10); R_m=tram_mag(:,10); R_y=tram_yellow(:,10); R_k=tram_black(:,10); x0=2 x_c=fminsearch(@heso_n_cyan,x0); x_m=fminsearch(@heso_n_mag,x0); x_y=fminsearch(@heso_n_yellow,x0); x_k=fminsearch(@heso_n_black,x0); n=[x_c x_m x_y x_k] end Chương trình tính giá trị sai biệt màu -function [de,dl,dc,dh] = cielabde(lab1,lab2) dim = size(lab1); if (dim(1) == 1) | (dim(2) == 1) lab1 = lab1(:)'; % force to be a row matrix else disp('lab1 must be a row matrix'); return; end if (dim(2) ~= 3) disp('lab1 must be by or by 3'); return; end dim = size(lab2); if (dim(1) == 1) | (dim(2) == 1) lab2 = lab2(:)'; % force to be a row matrix else disp('lab2 must be a row matrix'); return; end if (dim(2) ~= 3) disp('lab2 must be by or by 3'); return; end dl = lab2(1)-lab1(1); dc = sqrt(lab2(2)^2 + lab2(3)^2) - sqrt(lab1(2)^2 + lab1(3)^2); dh = sqrt((lab2(2)-lab1(2))^2 + (lab2(3)-lab1(3))^2 - dc^2); % get the polarity of the dh term dh = dh*dhpolarity(lab1,lab2); de = sqrt(dl^2 + dc^2 + dh^2); Chương trình chuyển đổi liệu phổ sang khơng gian màu function [xyz] = r2xyz(p, startlam, endlam, obs) if ((endlam>780) | (startlam 0.008856) lab(1) = 116*(xyz(2)/white(2))^(1/3) - 16; else lab(1) = 903.3*(xyz(2)/white(2)); end for i=1:3 if (xyz(i)/white(i) > 0.008856) fx(i) = (xyz(i)/white(i))^(1/3); else fx(i) = 7.787*(xyz(i)/white(i)) + 16/116; end end lab(2) = 500*(fx(1)-fx(2)); lab(3) = 200*(fx(2)-fx(3)); function [lab]=r2lab(ref1) r1=r2xyz(ref1, 400, 700,'d65_64'); p1=r1'; [lab]=xyz2lab(p1,'d65_64'); End ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ ... Trong qui trình in, màu sắc in phụ thuộc vào nhiều yếu tố: máy in, loại giấy, phương pháp in, tính chất hố lý loại mực Trong qui trình in Offset -một phương pháp in ưa chuộng cho màu sắc chất lượng... quang màu Red, Green, Blue 17 II.3.2.2 Quá trình tổng hợp màu trừ Hạn chế q trình tổng hợp màu cộng khắc phục trình tổng hợp màu trừ Hệ thống tổng hợp màu cộng bắt đầu màu đen (màn hình tivi) tổng. .. lọc) hay cách cộng hai màu sơ cấp tổng hợp màu cộng Mực in vật liệu suốt đóng vai trị kính lọc màu Màu tạo màu Blue hấp thụ mực in in lên giấy trắng? Màu Blue loại bỏ từ ánh sáng trắng màu quang