MATLAB ๋””์ง€ํ„ธ ์˜์ƒ์ฒ˜๋ฆฌ

1. ๋””์ง€ํ„ธ ์˜์ƒ์ฒ˜๋ฆฌ ๊ฐœ์š”

1.1 ์˜์ƒ์ฒ˜๋ฆฌ์˜ ์ •์˜

  1. ์ธ๊ฐ„์˜ ์‹œ๊ฐ์  ํ•ด์„์„ ์œ„ํ•œ ํ™”์งˆ ๊ฐœ์„ 
  2. ๊ธฐ๊ณ„ ์ธ์‹์„ ์œ„ํ•œ ์˜์ƒ ์ฒ˜๋ฆฌ

1.2 ์ฃผ์š” ์‘์šฉ ๋ถ„์•ผ

  1. ์˜๋ฃŒ ๋ถ„์•ผ: X-ray, MRI, CAT ์Šค์บ” ๋ถ„์„, ์„ธํฌ ์ด๋ฏธ์ง€ ๋ถ„์„
  2. ๋†์—… ๋ถ„์•ผ: ์œ„์„ฑ/ํ•ญ๊ณต ์ด๋ฏธ์ง€ ๋ถ„์„, ์ž‘๋ฌผ ์ƒํƒœ ๊ฒ€์‚ฌ
  3. ์‚ฐ์—… ๋ถ„์•ผ: ์ƒ์‚ฐ๋ผ์ธ ์ž๋™ ๊ฒ€์‚ฌ, ํ’ˆ์งˆ ๊ด€๋ฆฌ
  4. ๋ฒ• ์ง‘ํ–‰: ์ง€๋ฌธ ๋ถ„์„, ์†๋„ ์นด๋ฉ”๋ผ ์ด๋ฏธ์ง€ ๊ฐœ์„ 

2. ์ด๋ฏธ์ง€ ํƒ€์ž…๊ณผ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ

2.1 ๊ธฐ๋ณธ ์ด๋ฏธ์ง€ ํƒ€์ž…

  1. ์ด์ง„ ์ด๋ฏธ์ง€ (Binary)
    • ํ”ฝ์…€๋‹น 1๋น„ํŠธ (ํ‘๋ฐฑ)
    • ํ…์ŠคํŠธ, ์ง€๋ฌธ, ๋„๋ฉด์— ์ ํ•ฉ
  2. ๊ทธ๋ ˆ์ด์Šค์ผ€์ผ (Greyscale)
    • ํ”ฝ์…€๋‹น 8๋น„ํŠธ (0-255)
    • X-ray, ์ธ์‡„๋ฌผ์— ์ฃผ๋กœ ์‚ฌ์šฉ
  3. RGB ์ปฌ๋Ÿฌ
    • ํ”ฝ์…€๋‹น 24๋น„ํŠธ
    • ์ ์ƒ‰, ๋…น์ƒ‰, ์ฒญ์ƒ‰ ๊ฐ๊ฐ 8๋น„ํŠธ
  4. ์ธ๋ฑ์Šค ์ปฌ๋Ÿฌ
    • ์ปฌ๋Ÿฌ๋งต ์‚ฌ์šฉ
    • ์ œํ•œ๋œ ์ƒ‰์ƒ ์ˆ˜

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 ํ‘œ์‹œ ์˜ํ–ฅ ์š”์ธ

  1. ์ฃผ๋ณ€ ์กฐ๋ช…
  2. ๋ชจ๋‹ˆํ„ฐ ํƒ€์ž…๊ณผ ์„ค์ •
  3. ๊ทธ๋ž˜ํ”ฝ ์นด๋“œ
  4. ๋ชจ๋‹ˆํ„ฐ ํ•ด์ƒ๋„
  5. ๊ฐœ์ธ์˜ ์‹œ๊ฐ ์‹œ์Šคํ…œ

6.2 ํƒ€์ž… ๋ณ€ํ™˜ ์ฃผ์˜์‚ฌํ•ญ

  • double() vs im2double() ์ฐจ์ด ์ดํ•ด
  • uint8 ๋ณ€ํ™˜ ์‹œ ์Šค์ผ€์ผ๋ง ์ฃผ์˜
  • ์—ฐ์‚ฐ ์ „ ๋ฐ์ดํ„ฐ ํƒ€์ž… ํ™•์ธ
  • logical ํ”Œ๋ž˜๊ทธ ์ƒํƒœ ํ™•์ธ

7. ๊ถŒ์žฅ ์ž‘์—… ์ˆœ์„œ

  1. ์ด๋ฏธ์ง€ ์ •๋ณด ํ™•์ธ (imfinfo)
  2. ์ ์ ˆํ•œ ๋ฐฉ์‹์œผ๋กœ ์ด๋ฏธ์ง€ ์ฝ๊ธฐ (imread)
  3. ํ•„์š”์‹œ ํƒ€์ž… ๋ณ€ํ™˜ (im2double)
  4. ์ด๋ฏธ์ง€ ์ฒ˜๋ฆฌ ์ž‘์—… ์ˆ˜ํ–‰
  5. ๊ฒฐ๊ณผ ํ‘œ์‹œ ์ „ ํƒ€์ž…/๋ฒ”์œ„ ํ™•์ธ
  6. ์ ์ ˆํ•œ ๋ฐฉ์‹์œผ๋กœ ํ‘œ์‹œ (imshow)
  7. ํ•„์š”์‹œ ํ”ฝ์…€๊ฐ’ ํ™•์ธ (impixelinfo)