- 1. MATLAB 편집기 창을 사용한 이미지 처리
- 2. MATLAB GUI를 사용한 이미지 처리
- 이미지 처리를위한 MATLAB 그래픽 사용자 인터페이스 생성
- 이미지 처리를위한 MATLAB GUI 코드
- 이미지 처리를위한 MATLAB GUI 코드 실행
카메라로 어떤 물체를 가리키면 카메라가 그 물체의 이름을 알려 준다고 상상해보세요. 예, Android 스마트 폰의 Google 렌즈 는 이미지 처리를 사용하여 동일한 작업을 수행합니다. 이것은 컴퓨터가 사물 을 감지하고 인식하고 그에 따라 조치를 취할 수 있는 비전 을 제공합니다. 이미지 처리에는 얼굴 인식 및 인식, 엄지 인상, 증강 현실, OCR, 바코드 스캔 등과 같은 많은 응용 프로그램이 있습니다. 이미지 처리에 사용할 수있는 소프트웨어가 많이 있으며 그중 MATLAB 이 시작하기에 가장 적합합니다.
MATLAB은 많은 고급 이미지 처리 작업을 수행 할 수 있지만 MATLAB에서 이미지 처리 시작하기를 위해 여기에서는 RGB에서 회색으로, 이미지 회전, 이진 변환 등과 같은 몇 가지 기본 작업을 설명합니다. 노이즈 제거, 이미지를위한 자동화 프로그램을 추가로 만들 수 있습니다. 이 자습서에서 설명하는 기능을 사용하여 필터링합니다.
계속 진행하기 전에 MATLAB을 처음 사용하는 경우 이전 MATLAB 자습서에서 더 나은 절제를 확인할 수 있습니다.
- MATLAB 시작하기: 빠른 소개
- Arduino와 MATLAB 인터페이스-LED 깜박임
- MATLAB 및 Arduino를 사용한 DC 모터 제어
- MATLAB 및 Arduino를 사용한 스테퍼 모터 제어
- MATLAB을 사용하여 실시간 온도 그래프를 그리는 방법
MATLAB에서는 항상 이미지 처리 알고리즘을 수행하는 두 가지 방법이 있습니다. 하나는 편집기 / 명령 창에 명령을 직접 입력하는 것이고 다른 하나는 동일한 GUI를 만드는 것입니다. 여기에서는 MATLAB에서 이미지 처리의 기본 작업을 수행하는 두 가지 방법을 모두 보여줍니다.
1. MATLAB 편집기 창을 사용한 이미지 처리
이제 편집기 창에서 이미지 처리의 몇 가지 기본 작업을 수행하는 코드를 작성합니다. MATLAB에서 사용되는 모든 기본 용어에 익숙해 지려면 링크를 따르십시오. 편집기 창에 아래 코드를 복사하여 붙여 넣으십시오.
a = imread ('F: \ circuit digest \ image processing using matlab \ camerman.jpg'); subplot (2,3,1); imshow (a); b = rgb2gray (a); subplot (2,3,2); imshow (b); c = im2bw (a); subplot (2,3,3); imshow (c); d = imadjust (b); subplot (2,3,4); imshow (d); e = a; e = rgb2gray (e); subplot (2,3,5); imhist (e); imfinfo ('F: \ circuit digest \ image processing using matlab \ beard-man.jpg') = size (a) % colormap ('spring')
변수 'a'에서 imread ('filename') 명령을 사용하여 이미지를 가져온 다음 subplot (row, column, position)을 사용하여 '2'행과 '3'열의 플롯을 만들고 가져온 이미지를 위치 '에 표시합니다. 1'. 이미지를 표시하기 위해 imshow ('filename') 명령을 사용 합니다.
다음은 업로드 된 이미지에 대한 몇 가지 기본 처리를 수행하는 몇 가지 명령입니다.
- 변수 'b'에서 rgb2gray ('filename') 명령을 사용하여 RGB 이미지를 그레이 스케일 강도 이미지로 변환하고 위치 '2'의 플롯에 표시합니다.
- 변수 'c'에서 이미지를 이진 이미지로 변환하거나 im2bw ('filename') 명령을 사용하여 '0'(검은 색) 및 '1'(흰색) 형식으로 말할 수 있으며 위치 '3'.
- 변수 'd'에서 imadjust ('filename') 명령을 사용하여 그레이 스케일 이미지 강도 값을 조정하거나 매핑하고 위치 '4'의 플롯에 표시합니다.
- 변수 'e'에서 imhist ('filename') 명령을 사용하여 그레이 스케일 이미지의 히스토그램을 플로팅하고 '5'위치의 플롯에 표시합니다. 히스토그램을 플로팅하려면 항상 이미지를 그레이 스케일로 변환해야합니다. 그러면 해당 그래픽 파일의 히스토그램을 볼 수 있습니다.
- Imfinfo ('filename with location') 명령은 그래픽 파일에 대한 정보를 표시하는 데 사용됩니다.
- = size ('filename') 명령은 특정 그래픽 파일의 크기와 색상 평면을 표시하는 데 사용됩니다.
- colormap ('spring') 은 그래픽 파일의 컬러 맵 유형을 변경하는 데 사용됩니다. 여기에서 내 코드에서이 명령을 주석으로 설정했지만 백분율 기호를 제거하여 사용할 수 있습니다. MATLAB에는 Jet, HSV, Hot, Cool, Summer, Autumn, Winter, Gray, Bone, Copper, Pink, Lines 및 spring과 같은 다양한 유형의 색상이 있습니다.
이와 같이 MATLAB에는 다양한 작업을 수행하는 데 사용할 수있는 많은 명령이 있으며, 링크를 따라 가면 MATLAB에서 이미지 처리 기능을 확인할 수 있습니다.
2. MATLAB GUI를 사용한 이미지 처리
이미지 처리를위한 MATLAB 그래픽 사용자 인터페이스 생성
이미지 처리를위한 GUI (Graphical User Interface)를 구축하려면 명령 창 에 아래 명령을 입력하여 GUI를 시작합니다.
안내서
팝업 창이 열리면 아래 이미지와 같이 새로운 빈 GUI 를 선택하십시오.
이제 푸시 버튼의 수 (모든 푸시 버튼이 다른 작업을 수행함)와 이미지를 표시 할 하나의 축을 선택해야합니다.
푸시 버튼 또는 축의 크기를 조정하거나 모양을 변경하려면 해당 버튼을 클릭하기 만하면 버튼의 모서리를 드래그 할 수 있습니다. 이들 중 하나를 두 번 클릭하면 해당 버튼의 색상, 문자열, 태그 및 기타 옵션을 변경할 수 있습니다. 사용자 정의 후 다음과 같이 보일 것입니다.
원하는대로 버튼을 사용자 지정할 수 있습니다. 이제 이것을 저장하면 MATLAB 의 편집기 창 에 코드가 생성됩니다. 생성 된 코드를 편집하여 다른 푸시 버튼에 대한 작업을 설정합니다. 아래에서 MATLAB 코드를 편집했습니다.
이미지 처리를위한 MATLAB GUI 코드
MATLAB GUI를 사용하는 이미지 처리를위한 완전한 MATLAB 코드 는이 프로젝트의 끝에 제공됩니다. 또한 여기에 다운로드 할 GUI 파일 (.fig) 및 코드 파일 (.m)이 포함되어 있으며,이를 사용하여 요구 사항에 따라 버튼 또는 축 크기를 사용자 지정할 수 있습니다. 아래 설명 된대로 생성 된 코드를 편집했습니다.
에서 'uploadimage' 기능, 복사 및 PC에서 파일을 삽입 할 코드 아래에 붙여 넣습니다. 여기서 uigetfile ('image extension type') 명령 은 MATLAB GUI에서 이미지를 가져 오는 데 사용됩니다. imread () 명령을 사용하여 해당 파일을 읽은 다음 axes (handles.axes1)을 사용하여 axes1 에서 imshow () 명령으로 파일 을 표시합니다. 이제 setappdata () 명령을 사용하여 변수를 GUI에 저장하여 GUI의 한 부분에서 GUI의 다른 부분에 대한 변수에 액세스 할 수 있도록합니다.
a = uigetfile ('. jpg') a = imread (a); 축 (handles.axes1); imshow (a); setappdata (0, 'a', a)
이제 모든 함수 에서 GUI에서 setappdata ()를 사용하여 저장된 데이터를 검색하는 데 사용되는 getappdata () 명령을 볼 수 있습니다.
여기 에서는 이미지 처리에서 일반적으로 사용되는 8 가지 기능을 설명합니다.
S. 아니. |
명령 |
버튼 이름 |
수행 할 작업 |
1. |
uigetfile () |
이미지 업로드 |
디스크에서 이미지를 가져 오려면 클릭하십시오. |
2. |
rgb2gray () |
RGB에서 회색으로 |
RGB 이미지를 회색조로 변환하려면 클릭하십시오. |
삼. |
im2bw () |
이진 이미지로 변환 |
이미지를 바이너리로 변환하려면 클릭하세요. |
4. |
- |
초기화 |
이미지를 원본으로 재설정하려면 클릭하십시오. |
5. |
imhist () |
히스토그램 |
이미지의 히스토그램을 보려면 클릭하십시오. |
6. |
imcomplement () |
보완 이미지 |
보완 이미지를 확인하려면 클릭하십시오 |
7. |
edge (파일 이름, 방법) |
가장자리 감지 |
이미지의 가장자리를 감지하려면 클릭하십시오. |
8. |
imrotate (파일 이름, 각도) |
시계 방향으로 회전하세요 |
이미지를 시계 방향으로 회전하려면 클릭하십시오. |
9. |
imrotate (파일 이름, 각도) |
시계 반대 방향으로 회전 |
이미지를 시계 반대 방향으로 회전하려면 클릭하십시오. |
1. RGB 이미지를 그레이 스케일로 변환
에서는 'rgb2gray' 기능, 복사 코드 아래 붙여 계조로 RGB 영상 변환 커맨드를 사용하여 ) (rgb2gray를 .
a = getappdata (0, 'a'); agray = rgb2gray (a); 축 (handles.axes1); imshow (agray);
2. 이진 이미지로 변환
에서 'im2bw' 기능, 복사 코드 아래를 붙여 진 이미지로 이미지를 변환 하거나의 형식으로 말할 수있다 '0'(검은 색)과 '1'명령을 사용하여 (흰색) im2bw을 () .
a = getappdata (0, 'a'); abw = im2bw (a); 축 (handles.axes1); imshow (abw);
3. 원본 이미지로 재설정
에서는 '리셋' 기능, 복사 코드 아래 붙여 원본 이미지로 편집 된 영상을 다시.
a = getappdata (0, 'a'); 축 (handles.axes1); imshow (a);
4. 이미지 히스토그램 플로팅
에서는 "히스토그램" 기능, 복사 코드 아래 붙여 계조 화상의 히스토그램 플롯 명령하여 imhist ('파일 이름')를 ON으로에 표시 axes1 . 히스토그램을 플로팅하려면 항상 이미지를 그레이 스케일로 변환해야합니다. 그러면 해당 그래픽 파일의 히스토그램을 볼 수 있습니다.
a = getappdata (0, 'a'); ahist = a; ahist = rgb2gray (ahist); 축 (handles.axes1); imhist (ahist);
5. 보완 영상으로 변환
에서는 'complementimage' 기능, 복사하여 볼 아래 코드를 붙여 삽입 된 그래픽의 보수 명령을 사용하여 파일 ()을 imcomplement .
a = getappdata (0, 'a'); acomp = a; acomp = imcomplement (acomp); 축 (handles.axes1); imshow (acomp);
6. Canny 방법을 사용한 가장자리 감지
에서는 '에지' 기능, 복사 감지하고 커맨드를 사용하여 그레이 스케일 이미지에서 에지를 찾기 위해 다음 코드를 붙여 에지 ('파일 이름', '방법') . 방법 대신 Canny, Prewitt 및 montage 세 가지 중에서 선택할 수 있습니다. 가장자리 감지를 위해 Canny 방법을 사용하고 있습니다. 또한 원본 이미지에서 직접 가장자리를 감지 할 수 없습니다. 먼저 회색조로 변환 한 다음 가장자리를 감지 할 수 있습니다.
a = getappdata (0, 'a'); aedge = a; aedge = rgb2gray (에지); aedge = edge (aedge , 'Canny') ' axes (handles.axes1); imshow (aedge);
7. 이미지를 시계 방향으로 회전
에서는 '시계' 기능, 복사 코드 아래 붙여 시계 방향으로 이미지를 회전 명령하여 imrotate (파일명을, '각도')
a = getappdata (0, 'a'); aclock = a; aclock = imrotate (aclock, 270); 축 (handles.axes1); imshow (aclock);
8. 시계 반대 방향으로 이미지 회전
에서는 '반 시계' 기능, 복사 코드 아래 붙여 반 시계 방향으로 이미지를 회전 명령하여 imrotate (파일명을, '각도')
a = getappdata (0, 'a'); aclock = a; aclock = imrotate (aclock, 90); 축 (handles.axes1); imshow (aclock);
이미지 처리를위한 MATLAB GUI 코드 실행
이제 'RUN'버튼을 클릭하여.m 파일에서 편집 된 코드를 실행합니다.
MATLAB이 응답하는 데 몇 초가 걸릴 수 있습니다. 아래 그림과 같이 MATLAB이 왼쪽 하단에 사용 중 메시지를 표시 할 때까지 GUI 버튼을 클릭하지 마십시오.
모든 것이 준비되면 '이미지 업로드'버튼을 클릭하여 PC에서 이미지를 가져옵니다. 이제 버튼을 클릭하여 이미지를 변환하거나 회전 할 수 있습니다. 아래 표는 특정 버튼을 클릭 할 때 수행하는 작업을 보여줍니다.
각 버튼을 클릭하면 아래와 같은 결과가 나옵니다.
각 버튼의 완전한 작동은 아래 비디오에서 보여줍니다.
MATHWORKS 공식 사이트에서 구입할 수있는 Image Processing Toolbox를 사용하여 고급 수준의 이미지 처리를 수행 할 수도 있습니다. 고급 수준 작업의 일부는 다음과 같습니다.
- 기하학적 작업
- 블록 작업
- 선형 필터링 및 필터 설계
- 변형
- 이미지 분석 및 향상
- 이진 이미지 작업