Tải bản đầy đủ (.docx) (29 trang)

ĐÁNH GIÁ CHẤT LƯỢNG ẢNH THÔNG QUA tỉ số PSNR (có code bên dưới)

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (836.28 KB, 29 trang )

ĐỒ ÁN 3

ĐÁNH GIÁ CHẤT LƯỢNG ẢNH
THÔNG QUA TỈ SỐ PSNR

1


MỤC LỤC

2


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

3



ĐỒ ÁN 3
Trang 4/27

CHƯƠNG 1.

TỔNG QUAN VỀ ĐỀ TÀI

1.1 Giới thiệu về hệ thống xử lý ảnh
Xử lý ảnh là một lĩnh vực mang tính khoa học và công nghệ. Nó là ngành khoa học
mới so với nhiều ngành khoa học khác nhưng tốc độ phát triển của nó rất nhanh,
kích thích các trung tâm nghiên cứu, ứng dụng, đặc biệt là máy tính chuyên dụng
dành riêng cho nó.
Xử lý ảnh được đưa vào giảng dạy ở bậc đại học của nước ta khoảng 10 năm nay.
Nó là môn học liên quan đến nhiều lĩnh vực và cần nhiều kiến thức cơ sở khác. Đầu
tiên phải kể đến Xử lý tín hiệu số là môn học cơ bản cho xử lý tín hiệu chung, các
khái niệm về tích chập, các biến đổi Fourier, biến đổi Laplace, các bộ lọc hữu hạn…
thứ hai , các công cụ toán như Đại số tuyến tính, xác suất, thống kê.
Các phương pháp xử lý ảnh bắt đầu từ các ứng dụng chính: nâng cao chất lượng
ảnh, phân tích ảnh. Ứng dụng đầu tiên được biết đến là nâng cao chất lượng ảnh báo
được truyền qua cáp từ LonDon đến New York từ những năm 1920. Vấn đề về nâng
cao chất lượng ảnh có liên quan tới mức phân bố sáng và độ giải của ảnh. Việc nâng
cao chất lượng ảnh được phát triển vào những năm 1955. Điều này có thể giải thích
được vì sau Thế chiến thứ 2, máy tính phát triển nhanh tạo điều kiện cho quá trình
xử lý ảnh số thuận lợi. Năm 1964, máy tính đã có khả năng xử lý và nâng cao chất
lượng ảnh từ mặt trăng và vệ tinh Ranger 7 của Mỹ bao gồm: làm nổi đường biên và
lưu ảnh. Từ năm 1964 đến nay, các phương tiện xử lý, nâng cao chất lượng và 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 như mạng
noron nhân tạo, các thuật toán xử lý hiện đại và cải tiến, các công cụ nén ảnh ngày
càng được áp dụng rộng rãi và thu nhiều kết quả khả quan.


1.2 Một số khái niệm về ảnh số
 Ảnh số là tập hợp các đ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 3
Trang 5/27

 Điểm ảnh (Pixel): là một phần tử của ảnh số tại toạ độ (x, y) với độ xám hay màu
nhất định.
 Mức xám: Là kết quả của sự biến đổi tương ứng 1 giá trị độ sáng của 1 điểm ảnh
với một giá trị nguyên dương.
 Độ phân giải (Resolution) ảnh là mật độ điểm ảnh được ấn định trên một ảnh số
được hiển thị.
 Ảnh nhị phân: Giá trị xám của tất cả các điểm ảnh chỉ nhận giá trị 1 hoặc 0 vậy

mỗi điểm ảnh trong ảnh nhị phân được biểu diễn bởi một bit. Ảnh xám: Giá trị xám
nằm trong [0, 255] vậy mỗi điểm ảnh trong ảnh nhị phân được biểu diễn bởi một
byte.

Hình 1-1: Ảnh nhị phân

 Hệ màu RGB: Một pixel được biểu diễn bằng 3 giá trị (R, G, B) trong đó R, G, B
là một giá trị xám và được biểu biểu diễn bằng một byte. Khi đó ta có một ảnh 24
bits.

Đánh Giá Chất Lượng Ảnh Thông Qua Tỷ Số PSNR



ĐỒ ÁN 3
Trang 6/27

Hình 1-2: Hệ màu RGB

1.3 Ứng dụng của Matlab trong xử lý ảnh
 Matlab là một công cụ tính toán trong kỹ thuật, đặc biệt là các bài toán về ma
trận. Matlab còn cung cấp các toolboxes chuyên dụng để giải quyết những vấn đề
cụ thể như xử lý ảnh, xử lý số tín hiệu, neuron, mô phỏng… Matlab cung cấp Image
Processing toobox, chuyên về xử lý ảnh. Có thể nói Matlab là một công cụ lợi hại
giúp cho việc thực hiện các giải thuật xử lý ảnh nhanh chóng và dễ hiểu.
 Một số hàm Matlab cơ bản sử dụng trong 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 3
Trang 7/27

CHƯƠNG 2.

NỘI DUNG CỦA ĐỀ TÀI

1.4 Các loại nhiễu ảnh cơ bản
 Nhiễu salt and pepper: Nhiễu này sinh ra do xảy ra sai số trong quá trình truyền
dữ liệu. Những pixel đơn được đặt luân phiên mang giá trị 0 hay giá trị maximum

tạo ra hình chấm dạng muối tiêu trên ảnh.

Hình 2-3: Ảnh nhiễu Salt and Pepper

 Nhiễu Gaussian: Là một dạng lý tưởng của nhiễu trắng, được gây ra bởi những
dao động ngẫu nhiên của tín hiệu. Nhiễu Gaussian chính là nhiễu trắng có phân bố
chuẩn. Nhiễu Trắng là một tín hiệu ngẫu nhiên có mật độ phân bố công suất thẳng
nghĩa là tín hiệu nhiễu có công suất bằng nhau trong toàn khoảng băng thông. Nhiễu
Trắng ảnh hương lên toàn toàn bộ phổ tần của tín hiệu. Tín hiệu này có tên là nhiễu
Trắng vì nó 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 3
Trang 8/27

Hình 2-4: Ảnh nhiễu Gaussian

 Nhiễu Speckle: Có thể được mô hình bằng cách nhân các giá trị ngẫu nhiên với
giá trị của các pixel. Nhiễu Speckle là vấn đề quan tâm chủ yếu trong các ứng dụng
radar.

Hình 2-5: Ảnh nhiễu Speckle

 Nhiễu Poisson cũng là một dạng của nhiễu Trắng.

Đánh Giá Chất Lượng Ảnh Thông Qua Tỷ Số PSNR



ĐỒ ÁN 3
Trang 9/27

Hình 2-6: Ảnh nhiễu Poisson

1.5 Giới thiệu các bộ lọc nhiễu
1.1.1 Bộ lọc Mean (bộ lọc trung bình)
 Bộ lọc trung bình thay thế mỗi giá trị điểm ảnh trong một hình ảnh với giá trị
trung bình của giá trị các điểm ảnh lân cận, trong đó có điểm ảnh đó. Đây là một bộ
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 các hướng để bảo vệ biên của
ảnh khỏi bị mờ khi làm trơn ảnh. Các kiểu mặt nạ được sử dụng tùy theo các trường
hợp khác nhau.

Đánh Giá Chất Lượng Ảnh Thông Qua Tỷ Số PSNR


ĐỒ ÁN 3
Trang 10/27

Hình 2-7: Ví dụ về bộ lọc trung bình

Bộ lọc trung bình hiệu quả nhất trong việc khử nhiễu Gaussian nhưng đổi lại là sự
mất các chi tiết hình ảnh cao tần. Kích thước kernel lớn hơn sẽ có hiệu quả lọc lơn
hơn nhưng làm giảm chất lượng hình ảnh nên lọc này không hiệu quả trong việc
khử nhiễu ‘salt and pepper’ . Một biến thể phổ biến khác của bộ lọc này là tạo một
ngưỡng và chỉ thay thế các giá trị điểm ảnh hiện tại so với giá trị trung bình của
vùng lân cận nếu độ lớn của giá trị trung bình nằm nằm dưới ngưỡng này.




1.1.2 Bộ lọc Median (bộ lọc trung vị)
Bộ lọc trung vị thường được sử dụng trong xử lý ảnh. Lọc Median vượt qua

những hạn chế của bộ lọc trung bình. Bộ lọc này thay thế điểm ảnh đích bằng giá trị
trung vị của các điểm ảnh lân cận và chính điểm ảnh đó. Bộ lọc Median sẽ tìm giá
trị trung vị trong tất cả các điểm ảnh sau đó thay vào điểm ảnh trung tâm. Các bộ
lọc trung vị là cấp trên bộ lọc trung bình ở chỗ nó giữ độ nét tần số cao trong khi
vẫn loại bỏ nhiễu.
 Kỹ thuật này đòi hỏi giá trị các điểm ảnh trong 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ổ được chọn sao cho số điểm
ảnh trong cửa sổ là lẻ. Cửa sổ hay dùng là 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 3
Trang 11/27

 Có lợi cho việc loại bỏ các điểm ảnh hay các hàng mà vẫn bảo toàn độ phân giải.
 Hiệu quả giảm khi số điểm trong cửa sổ lớn hay bằng một nửa số điểm trong cửa
sổ. Điều này dễ giải thích vì trung vị giá trị lớn nhất. Lọc trung vị cho trường hợp 2
chiều coi như lọc trung vị tách được theo từng chiều.

Hình 2-8: Ví dụ về bộ lọc trung vị

1.1.3 Bộ lọc Gaussian
Bộ lọc Gaussian rất quan trọng với cả lý thuyết và thực tiễn. Chúng ta lọc hình ảnh
bằng cách sử dụng một kernel là dạng đối xứng xuyên tâm của hàm Gauss 2-D liên
tục được xác định như sau:


Đánh Giá Chất Lượng Ảnh Thông Qua Tỷ Số PSNR


ĐỒ ÁN 3
Trang 12/27

 Xấp xỉ rời rạc để hàm liên tục này sử dụng 2 tham số tự do là:
(1)

Các kích thước mong muốn của các Kernel (như là một mặt nạ lọc N*N).

(2)

Giá trị độ lệch chuẩn của hàm Gaussian.

 Ứng dụng của bộ lọc Gaussian chính là làm mịn ảnh, nó khác với bộ lọc trung
bình ở chổ là: thứ nhất, mức độ làm mịn được điều khiển bởi sự lựa chọn các tiêu
chuẩn thông số độ lệch, chứ không phải bởi giá trị tuyệt đối của kích thước hạt
nhân,thứ 2, hàm Gaussian có một thuộc tính khá đặc biệt, đó là biến đổi Fourier của
nó là một hàm Gaussian, điều đó rất thuận tiện để việc phân tích miền tần số của bộ
lọc.
 Một hàm Gauss với giá trị lớn của s là một ví dụ về bộ lọc thông thấp, trong đó
hàm lượng tần số không gian cao(ví dụ: tính năng cạnh sắc nét) của hình ảnh được
loại bỏ. Để hiểu được điều này đòi hỏi chúng ta có nền tảng tốt trong các biến đổi
Fourier, phân tích trong miền tần số.
1.1.4 Bộ lọc Wiener
 Bộ lọc Wiener dựa trên phương pháp thống kê để giảm nhiễu trong tín hiệu hiện
tại bằng cách so sánh nó với một tín hiệu ước tính mong muốn không có nhiễu.
 Bộ lọc Wiener là bộ lọc thích nghi tức là giá trị hệ số của bộ lọc thay đổi theo thời

gian, thường là phản ứng với những thay đổi trong đặc tính của tín hiệu vào.
1.1.5 Bộ lọc thông cao ( High Pass Filter)
 Bộ lọc thông cao dùng nhiều trong trích chọn biên và làm trơn ảnh.
 Dễ dàng nhận thấy, biên là điểm có độ biến thiên nhanh về giá trị mức xám theo
quan điểm về tần số tín hiệu. Vậy các điểm biên ứng với các thành phần tần số cao.
Từ đó,ta có thể dùng bộ lọc thông cao để cải thiện nhiễu : nghĩa là có thể lọc các
thành phần tần số thấp và giữ lại các thành phần tần số cao. Vì vậy, lọc thông cao
thường được dùng làm trơn biên trước khi tiến hành các thao tác với biên ảnh. Dưới
đây là một số mặt nạ dùng trong lọc thông cao:

Đánh Giá Chất Lượng Ảnh Thông Qua Tỷ Số PSNR


ĐỒ ÁN 3
Trang 13/27

Hình 2-9: Một số nhân chập trong lọc thông cao

Hình 2-10: Lọc thông cao

1.6 Tỷ số PSNR
 Cụm từ tỉ số tín hiệu cực đại trên nhiễu (peak signal-to-noise ratio) được viết tắt
là PSNR, là một thuật ngữ dùng để tính tỉ lệ giữa giá trị năng lượng tối đa của
một tín hiệu và năng lượng nhiễu ảnh hướng đến độ chính xác của thông tin. Vì có
rất nhiều tín hiệu có phạm vi biến đổi rộng, nên PSNR thường được biểu diễn bởi
đơn vị logarithmdecibel.
 PSNR sử dụng để đo chất lượng tín hiệu khôi phục của các thuật toán nén có mất
mát dữ liêu (lossy compression) (ví dụ: dùng trong nén ảnh). Tín hiệu trong trường
hợp này là dữ liệu gốc, nhiễu là các lỗi xuất hiện khi nén. Khi so sánh các thuật toán
nén thường dựa vào sự cảm nhận gần chính xác của con người đối với dữ liệu được

khôi phục, chính vì thế trong một số trường hợp dữ liệu được khôi phục của thuật
toán này dường như có chất lượng tốt hơn những cái khác, mặc dù nó có giá trị

Đánh Giá Chất Lượng Ảnh Thông Qua Tỷ Số PSNR


ĐỒ ÁN 3
Trang 14/27

PSNR thấp hơn (thông thường PSNR càng cao thì chất lượng dữ liệu được khôi
phục càng tốt). Vì vậy khi so sánh kết quả của 2 thuật toán cần phải dựa trên codecs
giống nhau và nội dung của dữ liệu cũng phải giống nhau.
Cách đơn giản nhất : định nghĩa thông qua sai số toàn phương trung bình (MSE,
mean squared error) được dùng cho ảnh 2 chiều có kích thước m×n trong
đó I và K là ảnh gốc và ảnh được khôi phục tương ứng:

Hình 2-11: Công Thức tính MSE

PSNR được định nghĩa bởi:
Hình 2-12: Công thức tính PSNR

Ở đây, MAXI chính là giá trị tối đa của pixel trên ảnh. Khi các pixcels được biểu
diễn bởi 8 bits, thì giá trị của nó là 255. Trường hợp tổng quát, khi tín hiệu được
biểu diễn bởi B bits trên một đơn vị lấy mẫu, MAXI là 2B−1. Với ảnh màu với 3
giá trị RGB trên 1 pixel, các tính toán cho PSNR tương tự ngoại trừ việc tính
MSE là tổng của 3 giá trị (tính trên 3 kênh màu) chia cho kích thước của ảnh và
chia cho 3.
Giá trị thông thường của PSNR trong lossy ảnh và nén video từ 30 đến 50 dB,
giá trị càng cao thì càng tốt. Giá trị có thể chấp nhận được khi truyền tín hiệu
không dây có tổn thất khoảng từ 20 dB đến 25 dB.

1.7 Sơ đồ giải thuật
Ảnh vào

Thêm Nhiễu cho ảnh

Tính tỷ số PSNR
giữa ảnh nhiễu và
ảnh gốc

Lọc ảnh

Tính tỷ số PSNR
giữa ảnh đã lọc và
ảnh gốc
Đánh Giá Chất Lượng Ảnh Thông Qua Tỷ Số PSNR


ĐỒ ÁN 3
Trang 15/27

CHƯƠNG 3.

KẾT QUẢ MÔ PHỎNG

1.8 Các bước thực hiện mô phỏng
Bước 1: Mở giao diện.

Hình 3-13: Giao diện của 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 3
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 bộ lọc sau đó click “loc nhieu”.

Hình 3-16: Lọc nhiễu

1.9 Nhận xét:
Sau khi thống kê các kết quả thì ta có:

Đánh Giá Chất Lượng Ảnh Thông Qua Tỷ Số PSNR


ĐỒ ÁN 3
Trang 17/27

Nhiễu Salt and Pepper được bộ lọc Mean lọc tốt nhất.
Nhiễu Gaussian được bộ lọc Wiener lọc tốt nhất.
Nhiễu Poisson được bộ lọc Wiener lọc tốt nhất.
Nhiễu Speckle được bộ lọc Gaussian lọc tốt nhất.


Đánh Giá Chất Lượng Ảnh Thông Qua Tỷ Số PSNR


ĐỒ ÁN 3
Trang 18/27

CHƯƠNG 4.

KẾT LUẬN

1.10 Ưu và nhược điểm
 Ưu điểm:
Dễ dàng sử dụng.
Kết quả đúng như mong đợi.
Sai số nằm trong mức cho phép.
 Nhược điểm:
Còn nhiều bộ lọc chưa được mô phỏng.
1.11 Hướng phát triển
Dựa trên nền tảng có sẵn có thể mô phỏng thêm nhiều bộ lọc hơn để khảo sát nhiều
loại nhiễu phù hợp với từng bộ 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 3
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 3
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 3
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 3
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 3
set(handles.edit1, 'visible', 'off');
set(handles.text4, 'visible', 'off');
case 4
set(handles.edit1, 'visible', 'off');

Đánh Giá Chất Lượng Ảnh Thông Qua Tỷ Số PSNR


ĐỒ ÁN 3
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 3
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 2 % Gaussian white noise
b = a + sqrt(p3)*randn(sizeA);
case 3 % 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<50); % Cases where pixel intensities are less than 50 units
if (~isempty(idx1))
g=exp(-a(idx1));
em=-ones(size(g));
t=ones(size(g));
idx2= (1:length(idx1))';
while ~isempty(idx2)
em(idx2)=em(idx2)+1;
t(idx2)=t(idx2).*rand(size(idx2));
idx2 = idx2(t(idx2) > g(idx2));
end

Đánh Giá Chất Lượng Ảnh Thông Qua Tỷ Số PSNR


ĐỒ ÁN 3
Trang 25/27

b(idx1)=em;
end
% For large pixel intensities the Poisson pdf becomes
% very similar to a Gaussian pdf of mean and of variance

% equal to the local pixel intensities. Ref. Mathematical Methods
% of Physics, 2nd Edition, Mathews, Walker (Addison Wesley)
idx1=find(a>=50); % Cases where pixel intensities are more than 49 units
if (~isempty(idx1))
b(idx1)=round(a(idx1)+sqrt(a(idx1)).*randn(size(idx1)));
end
b = reshape(b,sizeA);
case 1 % Salt & pepper noise
b = a;
x = rand(sizeA);
d = find(x < p3/2);
b(d) = 0; % Minimum value
d = find(x >= p3/2 & x < p3);
b(d) = 1; % Maximum (saturated) value
case 4 % Speckle (multiplicative) noise
b = a + sqrt(12*p3)*a.*(rand(sizeA)-.5);
end
axes(handles.axes1)
imshow(temp);
axes(handles.axes2)
imshow(b);
[M N] = size(temp);
error = temp - b;
MSE = sum(sum(error .* error)) / (M * N);
if(MSE > 0)
PSNR = 10*log(1*1/MSE) / log(10);
else
PSNR = 99;
end
set(handles.edit4,'string', PSNR)


Đánh Giá Chất Lượng Ảnh Thông Qua Tỷ Số PSNR


×