2.3.1 2치화·적응 2치화

목차에 대한 링크



MATLAB에 의한 화상 처리 · 컴퓨터 비전 입문 목차

개요



MATLAB에 의한 이진화, 적응 이진화에 대해 소개합니다. 매우 간단합니다.

Image Processing Toolbox가 필요하네요. 네.

지원 파일: I2_03_1_adaptThresholding.m

초기화



코드
clc;clear;close all;imtool close all;

이미지 읽기/표시



코드
G = imread('coins.png');
% 可視化
figure; imshow(G);



Otsu 방법으로 대국적 임계 값으로 이미지를 이진화



코드
BW = imbinarize(G);
% 可視化
figure; imshow(BW);



구멍을 채우다



코인의 내부가 이진화되어 있지 않기 때문에, 별도의 형태 처리로 메워 버립니다.

코드
BWf = imfill(BW, 'holes');
% 可視化
figure; imshow(BWf);



적응 이진화



다음으로 적응 이진화에 대해 살펴보겠습니다. 방금 전의 방법은, 화상 전체에 같은 임계치를 적용해, 2치화해 갔습니다. 이에 대해 이쪽은 이미지의 위치에 따라 임계값을 적응적으로 바꾸어 이진화하는 것입니다. 배경의 밝기에 편차가 있는 경우에 효과를 발휘합니다.

코드
G = imread('printedtext.png');
% 可視化
figure; imshow(G);



보시다시피 밝기에 상당한 차이가 있습니다.

휘도의 국소 평균을 이용하여 화소 단위로 적응 임계치 계산



코드
T = adaptthresh(G, 0.4, 'ForegroundPolarity','dark');  % 黒い部分が前景
figure; imshow(T);  % しきい値の可視化



코드
%% 算出したしきい値で、画像を二値化・表示
BW = imbinarize(G, T);
imshow([G; BW*256]); truesize; shg;     % 原画像を結果を、縦に並べて表示



이미지의 위치에 관계없이 제대로 2치화되어 있군요. 다른 예도 살펴보겠습니다.

코드
% 別の画像の読込み・表示
G = imread('rice.png');
figure; imshow(G);



코드
% 画像を適応二値化・表示
BW = imbinarize(G, 'adaptive', 'sensitivity',0.4);
figure; imshowpair(G, BW, 'montage');



이쪽도 제대로 되어있네요. 위치에 따라 임계값이 바뀌므로 결과 이미지가 패치에 불연속이 될 수 있습니다. 적절히 구분하는 것이 중요하다고 생각합니다.

감사의 말



이 기사는 @eigs 님의 livescript2markdown 을 사용하겠습니다.

목차에 대한 링크



MATLAB에 의한 화상 처리 · 컴퓨터 비전 입문 목차

좋은 웹페이지 즐겨찾기