ĐÁNH GIÁ CHẤT LƯỢNG ẢNH THÔNG QUA tỉ số PSNR (có code bên dưới) ĐÁNH GIÁ CHẤT LƯỢNG ẢNH THÔNG QUA tỉ số PSNR (có code bên dưới) ĐÁNH GIÁ CHẤT LƯỢNG ẢNH THÔNG QUA tỉ số PSNR (có code bên dưới) ĐÁNH GIÁ CHẤT LƯỢNG ẢNH THÔNG QUA tỉ số PSNR (có code bên dưới) ĐÁNH GIÁ CHẤT LƯỢNG ẢNH THÔNG QUA tỉ số PSNR (có code bên dưới)
ĐỒ ÁN ĐÁNH GIÁ CHẤT LƯỢNG ẢNH THÔNG QUA TỈ SỐ PSNR MỤC LỤC DANH MỤC CÁC HÌNH VẼ DANH MỤC CÁC TỪ VIẾT TẮT MSE Mean Squared Error RGB Red Green Blue PSNR Peak Signal Noise Ratio ĐỒ ÁN Trang 4/27 CHƯƠNG TỔNG QUAN VỀ ĐỀ TÀI 1.1 Giới thiệu hệ thống xử lý ảnh Xử lý ảnh lĩnh vực mang tính khoa học cơng nghệ Nó ngành khoa học so với nhiều ngành khoa học khác tốc độ phát triển nhanh, kích thích trung tâm nghiên cứu, ứng dụng, đặc biệt máy tính chun dụng dành riêng cho Xử lý ảnh đưa vào giảng dạy bậc đại học nước ta khoảng 10 năm Nó môn học liên quan đến nhiều lĩnh vực cần nhiều kiến thức sở khác Đầu tiên phải kể đến Xử lý tín hiệu số mơn học cho xử lý tín hiệu chung, khái niệm tích chập, biến đổi Fourier, biến đổi Laplace, lọc hữu hạn… thứ hai , công cụ tốn Đại số tuyến tính, xác suất, thống kê Các phương pháp xử lý ảnh ứng dụng chính: nâng cao chất lượng ảnh, phân tích ảnh Ứng dụng biết đến nâng cao chất lượng ảnh báo truyền qua cáp từ LonDon đến New York từ năm 1920 Vấn đề nâng cao chất lượng ảnh có liên quan tới mức phân bố sáng độ giải ảnh Việc nâng cao chất lượng ảnh phát triển vào năm 1955 Điều giải thích sau Thế chiến thứ 2, máy tính phát triển nhanh tạo điều kiện cho trình xử lý ảnh số thuận lợi Năm 1964, máy tính có khả xử lý nâng cao chất lượng ảnh từ mặt trăng vệ tinh Ranger Mỹ bao gồm: làm đường biên lưu ảnh Từ năm 1964 đến nay, phương tiện xử lý, nâng cao chất lượng nhận dạng phát triển ảnh không ngừng Các phương pháp tri thức nhân tạo mạng noron nhân tạo, thuật toán xử lý đại cải tiến, công cụ nén ảnh ngày áp dụng rộng rãi thu nhiều kết khả quan 1.2 Một số khái niệm ảnh số Ảnh số tập hợp điểm ảnh với mức xám thích hợp dùng để mơ tả ảnh gần với ảnh thật Đánh Giá Chất Lượng Ảnh Thông Qua Tỷ Số PSNR ĐỒ ÁN Trang 5/27 Điểm ảnh (Pixel): phần tử ảnh số toạ độ (x, y) với độ xám hay màu định Mức xám: Là kết biến đổi tương ứng giá trị độ sáng điểm ảnh với giá trị nguyên dương Độ phân giải (Resolution) ảnh mật độ điểm ảnh ấn định ảnh số hiển thị Ảnh nhị phân: Giá trị xám tất điểm ảnh nhận giá trị điểm ảnh ảnh nhị phân biểu diễn bit Ảnh xám: Giá trị xám nằm [0, 255] điểm ảnh ảnh nhị phân biểu diễn byte Hình 1-1: Ảnh nhị phân Hệ màu RGB: Một pixel biểu diễn giá trị (R, G, B) R, G, B giá trị xám biểu biểu diễn byte Khi ta có ảnh 24 bits Đánh Giá Chất Lượng Ảnh Thông Qua Tỷ Số PSNR ĐỒ ÁN Trang 6/27 Hình 1-2: Hệ màu RGB 1.3 Ứng dụng Matlab xử lý ảnh Matlab cơng cụ tính tốn kỹ thuật, đặc biệt toán ma trận Matlab cung cấp toolboxes chuyên dụng để giải vấn đề cụ thể xử lý ảnh, xử lý số tín hiệu, neuron, mơ phỏng… Matlab cung cấp Image Processing toobox, chuyên xử lý ảnh Có thể nói Matlab cơng cụ lợi hại giúp cho việc thực giải thuật xử lý ảnh nhanh chóng dễ hiểu Một số hàm Matlab sử dụng môn xử lý ảnh: Imread(): Đọc ảnh Imnoise(): Thêm nhiễu vào ảnh Imshow(): Hiển thị ảnh Đánh Giá Chất Lượng Ảnh Thông Qua Tỷ Số PSNR ĐỒ ÁN Trang 7/27 CHƯƠNG NỘI DUNG CỦA ĐỀ TÀI 1.4 Các loại nhiễu ảnh Nhiễu salt and pepper: Nhiễu sinh xảy sai số trình truyền liệu Những pixel đơn đặt luân phiên mang giá trị hay giá trị maximum tạo hình chấm dạng muối tiêu ảnh Hình 2-3: Ảnh nhiễu Salt and Pepper Nhiễu Gaussian: Là dạng lý tưởng nhiễu trắng, gây dao động ngẫu nhiên tín hiệu Nhiễu Gaussian nhiễu trắng có phân bố chuẩn Nhiễu Trắng tín hiệu ngẫu nhiên có mật độ phân bố cơng suất thẳng nghĩa tín hiệu nhiễu có cơng suất tồn khoảng băng thơng Nhiễu Trắng ảnh hương lên toàn toàn phổ tần tín hiệu Tín hiệu có tên nhiễu Trắng có tính chất tương tự với ánh sáng trắng Đánh Giá Chất Lượng Ảnh Thông Qua Tỷ Số PSNR ĐỒ ÁN Trang 8/27 Hình 2-4: Ảnh nhiễu Gaussian Nhiễu Speckle: Có thể mơ hình cách nhân giá trị ngẫu nhiên với giá trị pixel Nhiễu Speckle vấn đề quan tâm chủ yếu ứng dụng radar Hình 2-5: Ảnh nhiễu Speckle Nhiễu Poisson dạng nhiễu Trắng Đánh Giá Chất Lượng Ảnh Thông Qua Tỷ Số PSNR ĐỒ ÁN Trang 9/27 Hình 2-6: Ảnh nhiễu Poisson 1.5 Giới thiệu lọc nhiễu 1.1.1 Bộ lọc Mean (bộ lọc trung bình) Bộ lọc trung bình thay giá trị điểm ảnh hình ảnh với giá trị trung bình giá trị điểm ảnh lân cận, có điểm ảnh Đây lọc tuyến tính đơn giản với tác dụng làm mịn ảnh, khử nhiễu, Trong lọc trung bình người ta thường ưu tiên cho hướng để bảo vệ biên ảnh khỏi bị mờ làm trơn ảnh Các kiểu mặt nạ sử dụng tùy theo trường hợp khác Đánh Giá Chất Lượng Ảnh Thông Qua Tỷ Số PSNR ĐỒ ÁN Trang 10/27 Hình 2-7: Ví dụ lọc trung bình Bộ lọc trung bình hiệu việc khử nhiễu Gaussian đổi lại chi tiết hình ảnh cao tần Kích thước kernel lớn có hiệu lọc lơn làm giảm chất lượng hình ảnh nên lọc không hiệu việc khử nhiễu ‘salt and pepper’ Một biến thể phổ biến khác lọc tạo ngưỡng thay giá trị điểm ảnh so với giá trị trung bình vùng lân cận độ lớn giá trị trung bình nằm nằm ngưỡng 1.1.2 Bộ lọc Median (bộ lọc trung vị) Bộ lọc trung vị thường sử dụng xử lý ảnh Lọc Median vượt qua hạn chế lọc trung bình Bộ lọc thay điểm ảnh đích giá trị trung vị điểm ảnh lân cận điểm ảnh Bộ lọc Median tìm giá trị trung điểm ảnh sau thay vào điểm ảnh trung tâm Các lọc trung vị cấp lọc trung bình chỗ giữ độ nét tần số cao loại bỏ nhiễu Kỹ thuật đòi hỏi giá trị điểm ảnh cửa sổ phải xếp theo thứ tự tăng hay giảm dần so với giá trị trung vị Kích thước cửa sổ chọn cho số điểm ảnh cửa sổ lẻ Cửa sổ hay dùng cửa sổ có kích thước 3*3, 5*5 hay 7*7 Đánh Giá Chất Lượng Ảnh Thông Qua Tỷ Số PSNR ĐỒ ÁN Trang 15/27 CHƯƠNG KẾT QUẢ MÔ PHỎNG 1.8 Các bước thực mơ Bước 1: Mở giao diện Hình 3-13: Giao diện Guide Bước 2: Chọn ảnh Hình 3-14: Chọn ảnh gốc Đánh Giá Chất Lượng Ảnh Thông Qua Tỷ Số PSNR ĐỒ ÁN Trang 16/27 Bước 3: Lựa chọn loại nhiễu sau click “chen nhieu” Hình 3-15: Thêm nhiễu cho ảnh Bước 4: Lựa chọn lọc sau click “loc nhieu” Hình 3-16: Lọc nhiễu 1.9 Nhận xét: Sau thống kê kết ta có: Đánh Giá Chất Lượng Ảnh Thơng Qua Tỷ Số PSNR ĐỒ ÁN Trang 17/27 Nhiễu Salt and Pepper lọc Mean lọc tốt Nhiễu Gaussian lọc Wiener lọc tốt Nhiễu Poisson lọc Wiener lọc tốt Nhiễu Speckle lọc Gaussian lọc tốt Đánh Giá Chất Lượng Ảnh Thông Qua Tỷ Số PSNR ĐỒ ÁN Trang 18/27 CHƯƠNG KẾT LUẬN 1.10 Ưu nhược điểm Ưu điểm: Dễ dàng sử dụng Kết mong đợi Sai số nằm mức cho phép Nhược điểm: Còn nhiều lọc chưa mơ 1.11 Hướng phát triển Dựa tảng có sẵn mơ thêm nhiều lọc để khảo sát nhiều loại nhiễu phù hợp với lọc Thi công phần cứng để ứng dụng vào thực tế Đánh Giá Chất Lượng Ảnh Thông Qua Tỷ Số PSNR ĐỒ ÁN Trang 19/27 TÀI LIỆU THAM KHẢO Tiếng Việt: [1] Wikipedia.com Tiếng Anh: [2] Mathwork.com Đánh Giá Chất Lượng Ảnh Thông Qua Tỷ Số PSNR ĐỒ ÁN Trang 20/27 PHỤ LỤC A function varargout = adnoise(varargin) % ADNOISE M-file for adnoise.fig % ADNOISE, by itself, creates a new ADNOISE or raises the existing % singleton* % % H = ADNOISE returns the handle to a new ADNOISE or the handle to % the existing singleton* % % ADNOISE('CALLBACK',hObject,eventData,handles, ) calls the local % function named CALLBACK in ADNOISE.M with the given input arguments % % ADNOISE('Property','Value', ) creates a new ADNOISE or raises the % existing singleton* Starting from the left, property value pairs are % applied to the GUI before adnoise_OpeningFcn gets called An % unrecognized property name or invalid value makes property application % stop All inputs are passed to adnoise_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 adnoise % Last Modified by GUIDE v2.5 10-Nov-2017 17:11:49 % Begin initialization code - DO NOT EDIT gui_Singleton = 1; gui_State = struct('gui_Name', mfilename, 'gui_Singleton', gui_Singleton, 'gui_OpeningFcn', @adnoise_OpeningFcn, 'gui_OutputFcn', @adnoise_OutputFcn, 'gui_LayoutFcn', [] , 'gui_Callback', []); if nargin && ischar(varargin{1}) gui_State.gui_Callback = str2func(varargin{1}); end if nargout Đánh Giá Chất Lượng Ảnh Thông Qua Tỷ Số PSNR ĐỒ ÁN Trang 21/27 [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); else gui_mainfcn(gui_State, varargin{:}); end % End initialization code - DO NOT EDIT % - Executes just before adnoise is made visible function adnoise_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 adnoise (see VARARGIN) % Choose default command line output for adnoise handles.output = hObject; % Update handles structure guidata(hObject, handles); % set(handles.text19, 'visible', 'off'); % set(handles.popupmenu5, 'visible', 'off'); % set(handles.text21, 'visible', 'off'); % set(handles.popupmenu4, 'visible', 'off'); % set(handles.edit5, 'visible', 'off'); % set(handles.text29, 'visible', 'off'); % UIWAIT makes adnoise wait for user response (see UIRESUME) % uiwait(handles.figure1); % - Outputs from this function are returned to the command line function varargout = adnoise_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) Đánh Giá Chất Lượng Ảnh Thông Qua Tỷ Số PSNR ĐỒ ÁN Trang 22/27 % 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) global a; [FileName,PathName] = uigetfile({'*.png;*.PNG','PNG Files (*.png, *.PNG)'; '*.tif;*.TIF','TIF Files (*.tif, *.TIF)'; '*.gif;*.GIF','GIF Files (*.gif, *.GIF)'; '*.jpg;*.JPG','JPG Files (*.jpg, *JPG)'; '*.bmp;*.BMP','BMP Files (*.bmp, *.BMP)'; '*.*','All Files(*.*)'},'Select the input file'); if ~isequal(FileName,0) fullname = strcat(PathName,FileName); a=imread(fullname); axes(handles.axes1); imshow(a); else msgbox('Ban hay chon anh de thuc hien chuong trinh!') end % - 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) close % - Executes on selection change in popupmenu1 function popupmenu1_Callback(hObject, eventdata, handles) % hObject handle to popupmenu1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: contents = cellstr(get(hObject,'String')) returns popupmenu1 contents as cell array % contents{get(hObject,'Value')} returns selected item from popupmenu1 luachonnhieu = get(handles.popupmenu1,'value'); switch luachonnhieu case set(handles.edit1, 'visible', 'off'); set(handles.text4, 'visible', 'off'); case set(handles.edit1, 'visible', 'off'); Đánh Giá Chất Lượng Ảnh Thông Qua Tỷ Số PSNR ĐỒ ÁN Trang 23/27 set(handles.text4, 'visible', 'off'); otherwise set(handles.edit1, 'visible', 'on'); set(handles.text4, 'visible', 'on'); end % - Executes during object creation, after setting all properties function popupmenu1_CreateFcn(hObject, eventdata, handles) % hObject handle to popupmenu1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: popupmenu controls usually have a white background on Windows % See ISPC and COMPUTER if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function edit1_Callback(hObject, eventdata, handles) % hObject handle to edit1 (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 edit1 as text % str2double(get(hObject,'String')) returns contents of edit1 as a double % - Executes during object creation, after setting all properties function edit1_CreateFcn(hObject, eventdata, handles) % hObject handle to edit1 (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 on Windows % See ISPC and COMPUTER if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end Đánh Giá Chất Lượng Ảnh Thông Qua Tỷ Số PSNR ĐỒ ÁN Trang 24/27 % - Executes on button press in chennhieu function chennhieu_Callback(hObject, eventdata, handles) % hObject handle to chennhieu (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) axes(handles.axes1) cla axes(handles.axes2) cla global a; global b; a= im2double(a); temp=a; sizeA = size(a); luachonnhieu = get(handles.popupmenu1,'value') p3 = get(handles.edit1,'string'); p3 = str2num(p3); switch luachonnhieu case % Gaussian white noise b = a + sqrt(p3)*randn(sizeA); case % Poisson noise a = a(:); % (Monte-Carlo Rejection Method) Ref Numerical % Recipes in C, 2nd Edition, Press, Teukolsky, % Vetterling, Flannery (Cambridge Press) b=zeros(size(a)); idx1=find(a