๊ณตํ์๋ฅผ ์ํ Python ์ฌ์ฉ๋ฒ 19
2015_1_21(15h 2m 0s){0:04d}.tif'.format(idx) ย ์ ์ถฉ์ ์ด๋ฏธ์ง๋ฅผ ํด์ํ๋ ์๋ ํ๋ก๊ทธ๋จ์ ์ค๋ช ํ๋๋ก ํ๊ฒ ์ต๋๋ค.
https://gist.github.com/myjr52/64b8b80da1e2b4efedde
์ฐ๋ฆฌ๊ฐ ๊ทธ ๋์ ์์ฃผ ์ฌ์ฉํ๋ numpy์ matplotlib๋ง๊ณ , ๋ค์ ๋๊ฐ์ง ํจ์ ๋ชจ์์ง์ ์ด ํ๋ก๊ทธ๋จ์์ ์ฌ์ฉํฉ๋๋ค.
from skimage.segmentation import boundaries from scipy import ndimage
ํนํ skimage๋ ์ฌ๋ฌ๊ฐ์ง ๋งค์ฐ ์ ์ฉํ ๊ทธ๋ฆผ ์ฒ๋ฆฌ ํจ์๊ฐ ๊ตฌํ๋์ด์์ต๋๋ค. ์์ธํ ์ค๋ช ์ ์๋์ ๊ฐ๋ฉด ๋ณผ ์ ์์ต๋๋ค.
http://scikit-image.org/
์ผ๋จ ๋ค๊ฐ์ ๊ทธ๋ฆผ ํ์ผ ์ด๋ฆ์ด
2015_1_21(15h 2m 0s)0001.tifย
2015_1_21(15h 2m 0s)0002.tif ย ย
2015_1_21(15h 2m 0s)0003.tif ย
...
ํ์์ผ๋ก ๋์ด์์ต๋๋ค. ์ด ๊ทธ๋ฆผ์ ํ์ฅ์ฉ for-loop์์ ์ฝ๊ธฐ ์ํด ๋ค์๊ณผ ๊ฐ์ด ํ์ผ ์ด๋ฆ์ ์์ฑํฉ๋๋ค.
file_name = '2015_1_21(15h 2m 0s){0:04d}.tif'.format(idx)
์ฌ๊ธฐ์ ๋งจ ์ค๋ฅธ์ชฝ๋์ ์๋ idx๊ฐ 1๋ถํฐ ์ฆ๊ฐํ๋๋ฐ {0:04d}๋ถ๋ถ์ด ์ด ์ซ์๋ก ๋์ฒด๋ฉ๋๋ค. ํ๊ฐ์ ์ ๋ ฅ๋ฐ์ ์์ผ๋ฏ๋ก {0: ...}์์ 0์ด ์ฒซ๋ฒ์งธ ์ ๋ ฅ idx๋ฅผ ์๋ฏธํ๊ณ {0:04d}์์ 04d๋ index ์ ์ ์ทจ๊ธ์ ํ๋๋ฐ(d๊ฐ ์ ์ ์ทจ๊ธํ๋ผ๋ ๋ป์ ๋๋ค), 4์๋ฆฌ์ ์ถ๋ ฅํ๊ณ ๋น์๋ฆฌ๋ 0์ผ๋ก ์ฑ์ฐ๋ผ๋ (04๋ถ๋ถ) ๋ป์ ๋๋ค.
matplotlib์ imread (image read์ ์ค์๋ง?)๋ผ๋ ํจ์์ ์์ ํจ์ ์ด๋ฆ์ ๋์ ํด์ ํด๋น ๊ทธ๋ฆผ์ ์ฝ์ต๋๋ค.
Worm_Image = plt.imread(file_name)
์ด๋ ๊ฒ ์ฝ์ Worm_Image๋ 3์ฐจ์ ๋ฐฐ์ด์ธ๋ฐ, [:,:,0], [:,:,1], [:,:,2]๊ฐ ๊ฐ๊ฐ ๋นจ๊ฐ์, ํ๋์, ๋ น์์ ์ ๋์ ๋ํ ์ ๋ณด๋ฅผ ๋ด๊ณ ์๋ ๋ฐฐ์ด์ ๋๋ค. ์ฆ, ์ฝ์ ์๋์ ๊ทธ๋ฆผ์ ์๊น์ด ๋ณดํต ์๋๋ฐ, ์ฌ๊ธฐ์ ์ด ๋ฐฐ์ด์ ํ๋ฐฑ๊ทธ๋ฆผ์ผ๋ก ๋ฐ๊พธ๊ธฐ ์ํด ์ด ์ธ๊ฐ์ ๋ฐฐ์ด์ ๋ค์๊ณผ ๊ฐ์ด ๊ฐ์ค์น๋ฅผ ๋์ด์ 2์ฐจ์ ๋ฐฐ์ด๋ก ๋ง๋ญ๋๋ค.
Worm_Image = (0.2989*Worm_Image[:,:,0]/max_val_img ย ย ย ย ย ย ย ย + 0.5870*Worm_Image[:,:,1]/max_val_img ย ย ย ย ย ย ย ย + 0.1140*Worm_Image[:,:,2]/max_val_img)
์ฌ๊ธฐ์ mag_val_imag๋ ์๋ ๊ทธ๋ฆผ ๋ฐฐ์ด์ด ๊ฐ๊ณ ์๋ ์ต๋๊ฐ์ ๋๋ค. ์ด ์ต๋๊ฐ์ผ๋ก ์๋ ๊ทธ๋ฆผ๋ฐฐ์ด์ ๋๋ ์ 0๊ณผ 1์ฌ์ด๊ฐ์ผ๋ก ๋ง๋ค๊ณ , ๊ทธ ์์ ๊ฐ์ค์น๋ฅผ ๊ฐ๊ฐ 0.2989, 0.5870, 0.1140์ผ๋ก ๋์ด์ ๋ํ์ต๋๋ค. ์ด ๊ฐ์ค์น๋ ์ธ๋ฏ๋ณด์์๋ ํน๋ณํ ์๋ฏธ๊ฐ ์์ด๋ณด์ด๋๋ฐ์. ์๊น์๋ ๊ทธ๋ฆผ์ ํ๋ฐฑ์ผ๋ก ๋ฐ๊ฟ๋ ์ฌ์ฉ๋๋ ํ์ค์ ์ธ ๊ฐ์ค์น์ ๋๋ค. ์ด๋ป๊ฒ ์ด ๊ฐ์ด ์ ํด์ก๋์ง๋ ์๋ง๋ ๊ทธ๋ฆผ์ฒ๋ฆฌ ์ด๋ก ์์ ์๋ฏํฉ๋๋ค.
์ฌ๊ธฐ์ ์ด ๊ทธ๋ฆผ์ฒ๋ฆฌ์ ํฐ ๋ชฉ์ ์ ์ ์ถฉ ๋ชธ์ ๊ฒฝ๊ณ์ ์ ์ฐพ์๋ด๋๊ฒ์ธ๋ฐ, ๋ค์๊ณผ ๊ฐ์ด ๊ฐ๋จํ find_boundaries๋ผ๋ ํจ์๋ฅผ ์ฐ๋ฉด ๋ฉ๋๋ค.
Worm_Image = boundaries.find_boundaries(Worm_Image)
๊ทธ๋ฐ ๋ค์ ํฐ ํ๊ณก์ ์์ ์์ ํ๊ณก์ ์ด ์์ ์ ์๋๋ฐ ์ด๋ฐ ์์ ํ๊ณก์ ์ scipy์ ์๋ ๋ค์ ํจ์๋ก ๋ชจ๋ ์์ ๋ฒ๋ฆฝ๋๋ค.
Worm_Image = ndimage.binary_fill_holes(Worm_Image)
๊ทธ๋ฐ ๋ค์ ํ๋ฒ ๋ ๊ฒฝ๊ณ์ ์ ์ฐพ๋ ํจ์๋ฅผ ์ ์ฉํ๋ฉด, ์ฃผ์ด์ง ๊ทธ๋ฆผ์ ๊ฒฝ์ฐ ๊ฑฐ์ ์๋ฒฝํ๊ฒ ์ ์ถฉ์ ๊ฒฝ๊ณ์ ์ ์ฐพ์๋ ๋๋ค.













