Bài báo cáo bài tập môn Xử lý ảnh đề 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."

Bài báo cáo bài tập môn Xử lý ảnh đề 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." của Học viện Công nghệ Bưu chính Viễn thông với những kiến thức và thông tin bổ ích giúp sinh viên tham khảo, ôn luyện và phục vụ nhu cầu học tập của mình cụ thể là có định hướng ôn tập, nắm vững kiến thức môn học và làm bài tốt trong những bài kiểm tra, bài tiểu luận, bài tập kết thúc học phần, từ đó học tập tốt và có kết quả cao cũng như có thể vận dụng tốt những kiến thức mình đã học vào thực tiễn cuộc sống. Mời bạn đọc đón xem!

Xử Lý Ảnh
HỌ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
:
Ths Trnh Thế Vinh
Lớp
:
L11CQCN012-B
Nm 4
:
Nguyễn Văn Lợi
Ngô Văn ờng
Hoàng Minh Trang
Nguyễn Quốc Vinh
L11CQCN012-B Nhóm 5
Đề 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 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 nh vực y tế, xảnh đang được ứng dụng một cách rộng rãi đ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ử
ả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ể nét được, cần phải xử lọc nhiễu,
tăng cường và khôi phục ảnh. Xử ả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 đề
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 quyết định. Thực tế chỉ ra rằng hai
đối tượng 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 so với nền.
Nói một cách khác, độ tương phản độ 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 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 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 thcá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 schi tiết. nhiều kthuậ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 ảnh gần nhị phân không cho ảnh nhị phân khi quét ảnh do 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à y dựng chương trình ứng dụng theo yêu cầu nhằm hiểu
nắm vững các khái niệm, thao tác, kthuật về độ tương phản, ảnh âm bản và phân
ngưỡng ảnh. vậy, đầu tiên thực hiện 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
đó thể phát triển lên (giao diện đẹp thân thiện, bổ sung thêm các ứng dụng khác…).
Sử dụng phần mềm Matlab để 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ả.
3 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 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, ng dụng lựa chọn ngôn ngữ để thuận tiện cho người sử
dụng.
4.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)
% 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
Hoang 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);
% --- 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.
function 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
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ạicá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ẽ thê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.
4.3
Kết quả
Bên cạnh đó, ngoài yêu cầu của bài toán, chúng ta cũng 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.
| 1/11

Preview text:

Xử Lý Ảnh
HỌ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 GVHD
: Ths Trịnh Thế Vinh Lớp
: L11CQCN012-B Nhóm 4
: Nguyễn Văn Lợi
Ngô Văn Cường
Hoàng Minh Trang
Nguyễn Quốc Vinh L11CQCN012-B Nhóm 5 Trang 1
Đề 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.
Phát biểu bài toán 1
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.
Hướng giải quyết 2
Để 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 so 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ả. Thuật toán 3
Kỹ thuật cài đặt 4
Sử dụng phần mềm Matlab. Giao diện 4.1
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. Lập trình 4.2
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)
% 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 Hoang 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);
% --- 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.
function 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 Kết quả 4.3 Các vấn đề khác 5
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ẽ thê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.