The imshow function of degital image processing
MATLAB ๋์งํธ ์์์ฒ๋ฆฌ
1. ๋์งํธ ์์์ฒ๋ฆฌ ๊ฐ์
1.1 ์์์ฒ๋ฆฌ์ ์ ์
- ์ธ๊ฐ์ ์๊ฐ์ ํด์์ ์ํ ํ์ง ๊ฐ์
- ๊ธฐ๊ณ ์ธ์์ ์ํ ์์ ์ฒ๋ฆฌ
1.2 ์ฃผ์ ์์ฉ ๋ถ์ผ
- ์๋ฃ ๋ถ์ผ: X-ray, MRI, CAT ์ค์บ ๋ถ์, ์ธํฌ ์ด๋ฏธ์ง ๋ถ์
- ๋์ ๋ถ์ผ: ์์ฑ/ํญ๊ณต ์ด๋ฏธ์ง ๋ถ์, ์๋ฌผ ์ํ ๊ฒ์ฌ
- ์ฐ์ ๋ถ์ผ: ์์ฐ๋ผ์ธ ์๋ ๊ฒ์ฌ, ํ์ง ๊ด๋ฆฌ
- ๋ฒ ์งํ: ์ง๋ฌธ ๋ถ์, ์๋ ์นด๋ฉ๋ผ ์ด๋ฏธ์ง ๊ฐ์
2. ์ด๋ฏธ์ง ํ์ ๊ณผ ๋ฐ์ดํฐ ๊ตฌ์กฐ
2.1 ๊ธฐ๋ณธ ์ด๋ฏธ์ง ํ์
- ์ด์ง ์ด๋ฏธ์ง (Binary)
- ํฝ์ ๋น 1๋นํธ (ํ๋ฐฑ)
- ํ ์คํธ, ์ง๋ฌธ, ๋๋ฉด์ ์ ํฉ
- ๊ทธ๋ ์ด์ค์ผ์ผ (Greyscale)
- ํฝ์ ๋น 8๋นํธ (0-255)
- X-ray, ์ธ์๋ฌผ์ ์ฃผ๋ก ์ฌ์ฉ
- RGB ์ปฌ๋ฌ
- ํฝ์ ๋น 24๋นํธ
- ์ ์, ๋ น์, ์ฒญ์ ๊ฐ๊ฐ 8๋นํธ
- ์ธ๋ฑ์ค ์ปฌ๋ฌ
- ์ปฌ๋ฌ๋งต ์ฌ์ฉ
- ์ ํ๋ ์์ ์
2.2 ๋ฐ์ดํฐ ํ์
- int8: -128 ~ 127
- uint8: 0 ~ 255
- int16: -32768 ~ 32767
- uint16: 0 ~ 65535
- double: ์ค์ํ
3. MATLAB ๊ธฐ๋ณธ ์ด๋ฏธ์ง ์ฒ๋ฆฌ
3.1 ์ด๋ฏธ์ง ์ฝ๊ธฐ ๋ฐ ์ ๋ณด ํ์ธ
w = imread('wombats.tif'); % ์ด๋ฏธ์ง ์ฝ๊ธฐ
figure, imshow(w), impixelinfo % ํ์ ๋ฐ ํฝ์
๊ฐ ํ์ธ
imfinfo('image.tif') % ์ด๋ฏธ์ง ์ ๋ณด ํ์ธ
3.2 ์ด๋ฏธ์ง ํ์ ๋ณ ์ฒ๋ฆฌ
% RGB ์ด๋ฏธ์ง
a = imread('autumn.tif');
size(a) % ํฌ๊ธฐ ํ์ธ
a(100,200,:) % RGB ๊ฐ ํ์ธ
impixel(a,200,100) % ํฝ์
๊ฐ ๋ฐํ
% ์ธ๋ฑ์ค ์ปฌ๋ฌ ์ด๋ฏธ์ง
[em,emap] = imread('emu.tif'); % ์ด๋ฏธ์ง์ ์ปฌ๋ฌ๋งต ํจ๊ป ์ฝ๊ธฐ
imshow(em,emap) % ์ปฌ๋ฌ๋งต ์ ์ฉํ์ฌ ํ์
4. ๊ณ ๊ธ ์ด๋ฏธ์ง ์ฒ๋ฆฌ ๊ธฐ๋ฒ
4.1 ๋นํธ ํ๋ฉด ๋ถ์
c = imread('cameraman.tif');
cd = double(c);
% ๋นํธ ํ๋ฉด ๋ถ๋ฆฌ
c0 = mod(cd,2); % ์ตํ์ ๋นํธ
c7 = mod(floor(cd/128),2); % ์ต์์ ๋นํธ
% ์ด๋ฏธ์ง ๋ณต์
cc = 2*(2*(2*(2*(2*(2*(2*c7+c6)+c5)+c4)+c3)+c2)+c1)+c0;
imshow(uint8(cc))
4.2 ๊ณต๊ฐ ํด์๋ ์กฐ์
x2 = imresize(imresize(x,1/2),2); % 1/2 ํด์๋
x4 = imresize(imresize(x,1/4),4); % 1/4 ํด์๋
4.3 ๋ฐ์ดํฐ ํ์ ๋ณํ
% uint8 โ double ๋ณํ
cd = double(c) % ๊ฐ ์ ์ง
cd = im2double(c) % 0-1 ์ ๊ทํ
c2 = uint8(255*cd) % ์๋ ๋ณํ
c3 = im2uint8(cd) % ์๋ ๋ณํ
% ์ปฌ๋ฌ ํ์
๋ณํ
rgb_img = ind2rgb(x,map) % ์ธ๋ฑ์ค โ RGB
gray_img = rgb2gray(rgb_img) % RGB โ ๊ทธ๋ ์ด์ค์ผ์ผ
5. ์ด๋ฏธ์ง ํ์ ๊ธฐ์
5.1 ๊ธฐ๋ณธ ํ์ ํจ์
% image ํจ์
image(c) % ๊ธฐ๋ณธ ํ์
image(c), truesize, axis off % ๊ธฐ๋ณธ ์ค์
colormap(gray(247)) % ๊ทธ๋ ์ด์ค์ผ์ผ ์ค์
% imshow ํจ์
imshow(x) % uint8 ์ง์ ํ์
imshow(cd/255) % double ์ ๊ทํ ํ์
5.2 ์ด์ง ์ด๋ฏธ์ง ํ์
cl = c > 120 % ์๊ณ๊ฐ ์ด์งํ
imshow(logical(cl)) % logical ํ์
imshow(double(cl)) % double ๋ณํ ํ์
6. ์์ ์ ์ฃผ์์ฌํญ
6.1 ํ์ ์ํฅ ์์ธ
- ์ฃผ๋ณ ์กฐ๋ช
- ๋ชจ๋ํฐ ํ์ ๊ณผ ์ค์
- ๊ทธ๋ํฝ ์นด๋
- ๋ชจ๋ํฐ ํด์๋
- ๊ฐ์ธ์ ์๊ฐ ์์คํ
6.2 ํ์ ๋ณํ ์ฃผ์์ฌํญ
- double() vs im2double() ์ฐจ์ด ์ดํด
- uint8 ๋ณํ ์ ์ค์ผ์ผ๋ง ์ฃผ์
- ์ฐ์ฐ ์ ๋ฐ์ดํฐ ํ์ ํ์ธ
- logical ํ๋๊ทธ ์ํ ํ์ธ
7. ๊ถ์ฅ ์์ ์์
- ์ด๋ฏธ์ง ์ ๋ณด ํ์ธ (imfinfo)
- ์ ์ ํ ๋ฐฉ์์ผ๋ก ์ด๋ฏธ์ง ์ฝ๊ธฐ (imread)
- ํ์์ ํ์ ๋ณํ (im2double)
- ์ด๋ฏธ์ง ์ฒ๋ฆฌ ์์ ์ํ
- ๊ฒฐ๊ณผ ํ์ ์ ํ์ /๋ฒ์ ํ์ธ
- ์ ์ ํ ๋ฐฉ์์ผ๋ก ํ์ (imshow)
- ํ์์ ํฝ์ ๊ฐ ํ์ธ (impixelinfo)