Xử lý ảnh là một lĩnh vực mang tính khoa học và công nghệ. Nó là một ngành khoa học mới mẻ 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 riêng cho nó. Xử lý ảnh có nhiều ứng dụng trong thực tiễn như: hệ thông tin địa lý, quân sự, y học.
Trang 1HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
KHOA CÔNG NGHỆ THÔNG TIN
o0o
-BÁO CÁO BÀI TẬP MÔN XỬ LÝ ẢNH
Vinh
Nhóm 4 : Nguyễn Văn Lợi
Ngô Văn Cường Hoàng Minh Trang Nguyễn Quốc Vinh
Đà Nẵng, 11/2012
Trang 2Đề tài 04: Tìm hiểu các phương pháp thay đổi độ tương phản, tạo ảnh âm bản và phân
ngưỡng ảnh Thử nghiệm với ảnh 24 bit.
1 Phát biểu bài toán
Xử lý ảnh là một lĩnh vực mang tính khoa học và công nghệ Nó là một ngành khoa học mới mẻ 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 riêng cho nó Xử lý ảnh có nhiều ứng dụng trong thực tiễn như: hệ thông tin địa
lý, quân sự, y học.
Cụ thể, xử lý ảnh số có rất nhiều ứng dụng như:
Làm nổi các ảnh trong y học.
Khôi phục lại ảnh do tác động của khí quyển trong thiên văn học.
Chuyển tải, nén ảnh khi truyền đi xa hoặc lưu trữ.
Trong lĩnh vực y tế, xử lý ảnh đang được ứng dụng một cách rộng rãi và đem lại nhiều kết quả khả quan Khoa học hỗ trợ cho kỹ thuật chuẩn đoán hình ảnh chính là
xử lý ảnh Chẳng hạn như trong các phương pháp: chụp X-quang, chụp cắt lớp CT, MRI, siêu âm, … Ảnh sau khi được tái tạo chưa thể rõ nét được, cần phải xử lý lọc nhiễu, tăng cường và khôi phục ảnh Xử lý ảnh còn được ứng dụng trong nhận dạng tế bào ung thư, trong xác định tỉ lệ tế bào viêm trên tế bào bình thường
Trong phạm vi thời gian cho phép, chúng ta sẽ tìm hiểu và ứng dụng các vấn đề cơ bản như: thay đổi độ tương phản, tạo ảnh âm bản, phân ngưỡng ảnh.
2 Hướng giải quyết
Để có hướng giải quyết tốt nhất đối với bài toán, trước tiên cần nắm các khái niệm
về độ tương phản, ảnh âm bản, phân ngưỡng ảnh.
a) Độ tương phản
Ảnh số là tập hợp các điểm, mỗi điểm có giá trị độ sáng khác nhau Ở đây, độ sáng để mắt người dễ cảm nhận ảnh song không phải là quyết định Thực tế chỉ ra rằng hai đối tượng có cùng độ sáng nhưng đặt trên hai nền khác nhau sẽ cho cảm nhận sáng khác nhau Như vậy, độ tương phản biểu diễn sự thay đổi độ sáng của đối tượng
Trang 3so với nền Nói một cách khác, độ tương phản là độ nổi của điểm ảnh hay vùng ảnh so với nền Như vậy, nếu ảnh có độ tương phản kém, ta có thể thay đổi tùy theo ý muốn Ảnh với độ tương phản thấp có thể do điều kiện sáng không đủ hay không đều, hoặc do tính không tuyến tính hay biến động nhỏ của bộ cảm nhận ảnh Để điều chỉnh lại độ tương phản của ảnh, cần điều chỉnh lại biên độ trên toàn dải hay trên dải có giới hạn bằng cách biến đổi tuyến tính biên độ đầu vào hay phi tuyến.
b) Ảnh âm bản
Âm bản nhận được bằng phép biến đổi âm Phép biến đổi rất có nhiều hữu ích trong phim ảnh dùng trong các ảnh y học.
c) Phân ngưỡng ảnh
Kỹ thuật này đặt ngưỡng để hiển thị các tông màu liên tục Các điểm trong ảnh được so sánh với ngưỡng định trước Giá trị của ngưỡng sẽ quyết định điểm có được hiển thị hay không Do vậy ảnh kết quả sẽ mất đi một số chi tiết Có nhiều kỹ thuật chọn ngưỡng áp dụng cho các đối tượng khác nhau.
Phân ngưỡng là trường hợp đặc biệt của tách nhiễu Trong trường hợp này, ảnh đầu vào là ảnh nhị phân (có hai mức) Phân ngưỡng thường dùng trong kỹ thuật in ảnh hai màu vì ảnh gần nhị phân không cho ảnh nhị phân khi quét ảnh do có nhiễu từ bộ cảm biến và biến đổi của nền ví dụ trường hợp lọc nhiễu của ảnh vân tay.
d) Hướng giải quyết
Mục tiêu của chúng ta là xây dựng chương trình ứng dụng theo yêu cầu nhằm hiểu
và nắm vững các khái niệm, thao tác, kỹ thuật về độ tương phản, ảnh âm bản và phân ngưỡng ảnh Vì vậy, đầu tiên thực hiện xây dựng thuật toán, cài đặt phần mềm Matlab
và điều cơ bản nhất là phải xây dựng được chương trình minh họa ở mức đơn giản, sau đó có thể phát triển lên (giao diện đẹp và thân thiện, bổ sung thêm các ứng dụng khác…)
Sử dụng phần mềm Matlab để xây dựng chương trình hoàn chỉnh Sau khi thiết kế
và hoàn thành giao diện ứng dụng, thực hiện lập trình thao tác cho các đồ thị, nút… với yêu cầu đọc được file ảnh, xử lý, đưa ra màn hình, đồng thời xử lý và đưa ra file ảnh kết quả.
Trang 43 Thuật toán
4 Kỹ thuật cài đặt
Sử dụng phần mềm Matlab.
4.1 Giao diện
Thiết kế giao diện: hai trục tọa độ (asex1 hiển thị ảnh ban đầu, asex2 hiển thị ảnh sau khi xử lý), bảng điều khiển bao gồm các nút chọn ảnh, âm bản, phân ngưỡng, thay đổi độ tương phản và menu lưu ảnh (lưu ảnh với ba cách tùy theo nhu cầu) Bên cạnh
đó, nhóm chúng em bổ sung thêm các ứng dụng phụ như các nút thoát, thiết lập lại, nút giới thiệu thông tin nhóm, và ứng dụng lựa chọn ngôn ngữ để thuận tiện cho người
sử dụng.
Trang 54.2 Lập trình
function varargout = BT2(varargin)
% BT2 M-file for BT2.fig
% BT2, by itself, creates a new BT2 or raises the existing
% singleton*
%
% H = BT2 returns the handle to a new BT2 or the handle to
% the existing singleton*
%
% BT2('CALLBACK',hObject,eventData,handles, ) calls the local
% function named CALLBACK in BT2.M with the given input arguments
%
% BT2('Property','Value', ) creates a new BT2 or raises the
% existing singleton* Starting from the left, property value pairs are
% applied to the GUI before BT2_OpeningFcn gets called An
% unrecognized property name or invalid value makes property
application
% stop All inputs are passed to BT2_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 BT2
% Last Modified by GUIDE v2.5 13-Dec-2012 21:33:16
% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename,
'gui_Singleton', gui_Singleton,
'gui_OpeningFcn', @BT2_OpeningFcn,
'gui_OutputFcn', @BT2_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 BT2 is made visible
function BT2_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 BT2 (see VARARGIN)
Trang 6% Choose default command line output for BT2
handles.output = hObject;
% Update handles structure
guidata(hObject, handles);
% UIWAIT makes BT2 wait for user response (see UIRESUME)
% uiwait(handles.figure1);
% - Outputs from this function are returned to the command line
function varargout = BT2_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 thoat
function thoat_Callback(hObject, eventdata, handles)
% hObject handle to thoat (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
clear all; % xoa bo nho
close(BT2); %Thoat chuong trinh
msgbox(' Thank You !!!!!!! Best Wish For You !!!!See You Again
(^-^) ')
% - 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) axes(handles.axes2); cla reset; axes(handles.axes1); cla reset; clear all; % - Executes on button press in gioithieu function gioithieu_Callback(hObject, eventdata, handles) % hObject handle to gioithieu (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) msgbox('Hoc vien Cong Nghe Buu Chinh Vien Thong
Khoa CNTT
GVHD: Ths Trinh The Vinh
Lop: L11CQCN012-B
Nhom 4
Ngo Van Cuong
Nguyen Van Loi
Trang 7Hoang Minh Trang Nguyen Quoc Vinh')
% - Executes on button press in ngonngu
function ngonngu_Callback(hObject, eventdata, handles)
% hObject handle to ngonngu (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hint: get(hObject,'Value') returns toggle state of ngonngu
a = get(hObject,'Value');
if a == 1
set(handles.ngonngu, 'String', 'Lua chon ngon ngu');
set(handles.amban, 'String', 'Am ban');
set(handles.nguong, 'String', 'Phan nguong');
set(handles.gioithieu, 'String', 'Gioi thieu');
set(handles.thoat, 'String', 'Thoat');
set(handles.dkhien, 'String', 'Bang Dieu Khien');
set(handles.tuongphan, 'String', 'Do Tuong Phan:');
set(handles.chon, 'String', 'Chon Anh');
set(handles.reset, 'String', 'ThietLapLai');
set(handles.luu, 'String', 'Luu Anh:');
else
set(handles.ngonngu, 'String', 'Choose language');
set(handles.amban, 'String', 'Negative');
set(handles.nguong, 'String', 'Threshold');
set(handles.gioithieu, 'String', 'About');
set(handles.thoat, 'String', 'Exit');
set(handles.dkhien, 'String', 'Control Panel');
set(handles.tuongphan, 'String', 'Contrast:');
set(handles.chon, 'String', 'Choose Image');
set(handles.reset, 'String', 'Reset');
set(handles.luu, 'String', 'Save:');
end
% - Executes on button press in amban
function amban_Callback(hObject, eventdata, handles)
% hObject handle to amban (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
global anh;
global anh2;
anh2=imadjust(anh,[0 1],[1 0]);
axes(handles.axes2);
imshow(anh2);
% - Executes on button press in nguong
function nguong_Callback(hObject, eventdata, handles)
% hObject handle to nguong (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
global anh;
global anh3;
anh3 = im2bw(anh);
axes(handles.axes2);
imshow(anh3);
Trang 8% - Executes on slider movement.
function slider4_Callback(hObject, eventdata, handles)
% hObject handle to slider4 (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,'Value') returns position of slider
% get(hObject,'Min') and get(hObject,'Max') to determine range of slider
global anh;
global anh4;
a= anh;
b= [get(hObject,'Value'), 1];
anh4=imadjust(a, stretchlim(a, b));
axes(handles.axes2);
imshow(anh4);
% - Executes during object creation, after setting all properties
function slider4_CreateFcn(hObject, eventdata, handles)
% hObject handle to slider4 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% Hint: slider controls usually have a light gray background
if isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor',[.9 9 9]);
end
% - Executes on button press in chon
function chon_Callback(hObject, eventdata, handles)
% hObject handle to chon (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
[filename,pathname]=uigetfile({'*.*'},'Thu Vien Anh')
global anh;
var=strcat(pathname,filename);
if (filename == 0)
msgbox(' Vui long chon anh ');
else
anh=imread(var);
axes(handles.axes1);
imshow(anh);
end
% - Executes during object creation, after setting all properties
function axes2_CreateFcn(hObject, eventdata, handles)
% hObject handle to axes2 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% Hint: place code in OpeningFcn to populate axes2
% - Executes during object creation, after setting all properties
Trang 9function axes1_CreateFcn(hObject, eventdata, handles)
% hObject handle to axes1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% Hint: place code in OpeningFcn to populate axes1
% - Executes during object creation, after setting all properties
function bang_CreateFcn(hObject, eventdata, handles)
% hObject handle to bang (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% - 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 = get(hObject,'String') returns popupmenu1 contents as cell array
% contents{get(hObject,'Value')} returns selected item from
% popupmenu1
contents = get(hObject,'Value');
switch contents
case 1
global anh2;
imwrite(anh2,'AmBan.jpeg','jpeg');
case 2
global anh3;
imwrite(anh3,'PhanNguong.jpeg','jpeg');
case 3
global anh4;
imwrite(anh4,'TuongPhan.jpeg','jpeg');
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
% - Executes during object creation, after setting all properties
function luu_CreateFcn(hObject, eventdata, handles)
% hObject handle to luu (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
Trang 104.3 Kết quả
5 Các vấn đề khác
Trong phạm vi thời gian không cho phép, nhóm chúng em dừng lại ở các nội dung ảnh âm bản, phân ngưỡng ảnh và thay đổi độ tương phản Nếu tiếp tục thực hiện sẽ
Trang 11thêm các ứng dụng khác như tách màu, nâng cao chất lượng ảnh, phát hiện biên… để chương trình hoàn thiện hơn
Bên cạnh đó, ngoài yêu cầu của bài toán, chúng ta cũng có thể phát triển thêm các ứng dụng như: thao tác trực tiếp (khoanh vùng chẳng hạn…) bằng chuột trên ảnh âm bản sau khi đã được chuyển từ ảnh ban đầu… nhằm phục vụ tốt hơn cho người dùng