ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • SLIC ์•Œ๊ณ ๋ฆฌ์ฆ˜, Superpixel segmentation
    AI\ML\DL/Computer Vision 2023. 8. 11. 11:16
    ๋ฐ˜์‘ํ˜•

     

    Simple Linear Iterative Clustering (SLIC)์€ ์ฃผ๋กœ ์ด๋ฏธ์ง€ ์ฒ˜๋ฆฌ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ์Šˆํผํ”ฝ์…€ ์ƒ์„ฑ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค. 

    SLIC  ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์˜๋ฏธ์ ์œผ๋กœ ๊ด€๋ จ๋œ ํ”ฝ์…€์„ ๊ทธ๋ฃนํ™”ํ•˜์—ฌ ์Šˆํผํ”ฝ์…€์„ ์ƒ์„ฑํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋œ๋‹ค. 

     

    ์Šˆํผํ”ฝ์…€(Super pixel, segmented pixel)์€ ์ธ์ ‘ํ•œ ํ”ฝ์…€๋“ค์„ ํ•˜๋‚˜์˜ ๊ทธ๋ฃน์œผ๋กœ ๋ฌถ์–ด ์‹œ๊ฐ์ ์œผ๋กœ ์˜๋ฏธ ์žˆ๋Š” ์˜์—ญ์„ ํ˜•์„ฑํ•˜๋Š” ์ž‘์€ ๋ธ”๋ก ๋˜๋Š” ํŒจ์น˜๋ฅผ ์˜๋ฏธํ•œ๋‹ค. ์ด๋Ÿฌํ•œ ์Šˆํผํ”ฝ์…€์€ ์ „ํ†ต์ ์ธ ํ”ฝ์…€ ๋‹จ์œ„์˜ ์ด๋ฏธ์ง€ ์ฒ˜๋ฆฌ ๋Œ€์‹  ์˜๋ฏธ์ ์œผ๋กœ ์œ ์‚ฌํ•œ "์˜์—ญ"์„ ๊ณ ๋ คํ•˜์—ฌ ์ด๋ฏธ์ง€๋ฅผ ๋ถ„ํ• ํ•œ๋‹ค. 

     

    ์˜ˆ์ปจ๋ฐ ์‚ฐ๊ณผ ๊ฐ• ๊ทธ๋ฆฌ๊ณ  ํ•˜๋Š˜, ๋‚˜๋ฌด๋ฅผ ๋‹ด๊ณ ์žˆ๋Š” ์ด๋ฏธ์ง€์—์„œ ํŠน์ • ํ”ฝ์…€๋“ค์˜ ์˜์—ญ์€ ์–ด๋–ค ์˜๋ฏธ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. 

    ์•„๋ž˜ ๊ทธ๋ฆผ์—์„œ ๋ฐ•์Šค๋ฅผ ์นœ ๋ถ€๋ถ„์€ ์ƒ‰์ด ํŒŒ๋ž€์ƒ‰์ด๊ณ  ๋•… ๋ถ€๋ถ„๊ณผ๋Š” ๋ถ„๋ฆฌ๋˜์–ด '๊ฐ•' ์ด๋ผ๋Š” ์˜๋ฏธ๋ฅผ ๊ฐ€์ง„๋‹ค.

    SLIC ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ด๋ฏธ์ง€๋ฅผ ์˜๋ฏธ์žˆ๋Š” ์˜์—ญ์ธ ์Šˆํผํ”ฝ์…€ ๋‹จ์œ„๋กœ ๋ถ„ํ• ์„ ํ•  ์ˆ˜ ์žˆ๋‹ค. 

    SLIC๋ฅผ ์ ์šฉํ•˜๋ฉด ์ด๋ฏธ์ง€์˜ ์˜์—ญ์ด ์ด๋ ‡๊ฒŒ ์ˆ˜ํผํ”ฝ์…€ ๋‹จ์œ„๋กœ ๋ถ„ํ• ๋œ๋‹ค. 

    skimage.segmentation.slic() ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ด๋ฏธ์ง€๋ฅผ ๋ช‡๊ฐœ์˜ ์Šˆํผํ”ฝ์…€ (segments) ๋กœ ์„ธ๋ถ„ํ™”ํ• ์ง€, ๋˜๋Š” ์Šˆํผ ํ”ฝ์…€์˜ ํฌ๊ธฐ๋ฅผ ์–ผ๋งˆ๋‚˜ ํฌ๊ฒŒ ํ• ์ง€ ์กฐ์ ˆํ•  ์ˆ˜ ์žˆ๋‹ค. 

    import cv2 as cv
    import skimage
    from skimage.segmentation import slic
    from skimage.segmentation import mark_boundaries
    from skimage.util import img_as_float
    from skimage import io
    import matplotlib.pyplot as plt
    
    img = cv.imread('nature.jpg')
    cv.imshow('Image', img)
    
    segments = slic(img, n_segments=20, compactness=10, sigma=1)
    segments1 = mark_boundaries(img, segments, color=(1,1,1), outline_color=(1,1,1))
    cv.imshow('Super pixels (compact 10)',segments1)
    cv.waitKey()
    cv.destroyAllWindows()

     

     

    skimage์˜ slic ํ•จ์ˆ˜๋Š” ์Šˆํผ ํ™”์†Œ ๋ถ„ํ• ์„ ์ˆ˜ํ–‰ํ•˜๊ณ  ๊ฒฐ๊ณผ๋ฅผ segments ์— ์ €์žฅํ•œ๋‹ค. 

    compactness ์ธ์ˆ˜๋Š” ์Šˆํผ ํ™”์†Œ์˜ ๋ชจ์–‘์„ ์กฐ์ ˆํ•œ๋‹ค.

    compactness ๊ฐ’์ด ํด์ˆ˜๋ก ๋„ค๋ชจ์— ๊ฐ€๊นŒ์šด ๋ชจ์–‘์ด ๋งŒ๋“ค์–ด์ง€๋Š” ๋Œ€์‹  ์Šˆํผ ํ”ฝ์…€ ๋‚ด์—์„œ ์ƒ‰์ƒ๊ท ์ผ์„ฑ์€ ํฌ์ƒ๋œ๋‹ค. 

    n_segments ์ธ์ˆ˜๋Š” ์Šˆํผ ํ™”์†Œ์˜ ๊ฐœ์ˆ˜๋ฅผ 20๊ฐœ๋กœ ์ง€์ •ํ•œ๋‹ค. 

    mark_boundaries ํ•จ์ˆ˜๋Š” ๋ถ„ํ•  ๊ฒฐ๊ณผ(segments ๊ฐ์ฒด์— ์ €์žฅ๋จ) ๋ฅผ ์‹œ๊ฐ์ ์œผ๋กœ ํ‘œํ˜„ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋ฉฐ , ๊ฐ ์Šˆํผ ํ”ฝ์…€์˜ ๊ฒฝ๊ณ„์— ์„ ์„ ๊ทธ๋ ค์ค€๋‹ค. 

     

     

Designed by Tistory.