#818์์
๋ฐฐ์น ๋ฐฉ์์ด ์๋ ๋ํ์์ผ๋ก ์คํํ ์ ์๋๋ก ์ ๋ฆฌ ์ ํธ๋ฆฌํฐ๋ฅผ ์ฌ์ค๊ณํฉ๋๋ค.
์ด๋ ๊ฒ ํ๋ฉด ์ค๊ฐ ์ ๋ฆฌ ํ์ผ์ ์ ์ฅํ ํ์๊ฐ ์๊ณ (๋ฌธ์ #598) ๋จ๊ณ๋ฅผ ๊ฑด๋๋ธ ์ ์์ต๋๋ค(๋ฌธ์ #507).
์ด ๋ฌธ์ ๋ฅผ shapeworks python ํจํค์ง ๋ฐ ๊ด๋ จ ์ฌ์ฉ ์ฌ๋ก ๋์์ธ์ ๋ํ ์์/๊ตฌ๋ ๋ฌธ์ ๋ก ์ฌ์ฉํ๊ฒ ์ต๋๋ค. ๋์ค์ ๋ ์ง์ค๋ ๋ฌธ์ ๋ฅผ ์ถ๊ฐํ๊ณ ์ด ๋ฌธ์ ์ ์ฐ๊ฒฐํ ์ ์์ต๋๋ค. ๊ทธ์ ๋ฐ๋ผ ๊ด๋ จ ๋ฌธ์ ๋ฅผ ๋ง๊ฐํ์ต๋๋ค.
@jadie1 @iyerkrithika21 ํ์ด์ฌ API์ ์ผ๋ถ๋ก ์ด๊ฒ์ ๋ ผ์ํ๊ธฐ ์ํด GC ์ฌ๋กฏ์ ์ฐธ์ฌํ์ญ์์ค. ํ์ํ ๊ฒฝ์ฐ ๋ ์ผ์ฐ ๋ ๋ ์ ์๋๋ก ์์ ์์ ์ด๋ฅผ ์๋ก ์ฎ๊ฒผ์ต๋๋ค.
์ ๋ ์ง๊ธ Python ๋ชจ๋ ํจํค์ง์ ์ฐพ๊ณ ์์ต๋๋ค. ์ ์์ด๋ ์๊ฐ์ด ์์ผ๋ฉด ์ ์๊ฒ ping์ ๋ณด๋ด์ฃผ์ญ์์ค.
๋ด๊ฐ ์ฐพ์ ๋ช ๊ฐ์ง ์ง์นจ:
์ง๊ธ๊น์ง ๋๋ ํํ์ด ๋ ๋์ ์ข
์์ฑ ์ฌ์์ ์ํด conda์ ๊ฐ์ฅ ๊ด์ฌ์ด ์์ง๋ง ๋ฌด์์ด๋ ๊ฐ๊ฒ ๋์ด ๊ธฐ์ฉ๋๋ค.
conda๋ฅผ ์ฌ์ฉํ๋ ์ด์ ๋ ์ด ํจํค์ง๋ก ๋ชจ๋ ๊ฒ์ ์ค์นํ ์ ์์ด์ผ ํ๊ธฐ ๋๋ฌธ์
๋๋ค: ๋ช
๋ น์ค, python ๋ชจ๋ ๋ฐ ์คํ๋์ค. ๊ทธ๋ฌ๋ ์ฐ๋ฆฌ๋ ํ์ด์ฌ ๋ชจ๋๋ถํฐ ์์ํ ๊ฒ์
๋๋ค.
๋ด๊ฐ ๊ฐ์ฅ ๋๋ ค์ํ๋ ๊ฒ์ ๋ค์ค ํ๋ซํผ ๋ฌธ์ ๊ฐ ์ฐ๋ฆฌ์ ์ถ์ ๋นจ์๋ค์ด๋ ๊ฒ์ด๋ฏ๋ก OSX๋ฅผ ๋จผ์ ์๋์ํค๊ณ ๊ฑฐ๊ธฐ์์ ๋ฒ์ด๋๋ ค๊ณ ๋ ธ๋ ฅํ ๊ฒ์ ๋๋ค.
Ubuntu 18.04์์ ์ฌ์ฉ ์ฌ๋ก๊ฐ ์๋ํ์ง ์์ ๋ค์์ ์ํํด์ผ ํ์ต๋๋ค.
sys.path.append('../../build/cmake-build-release/bin/')
์๋จ์ ์ถ๊ฐํ์ต๋๋ค.LD_LIBRARY_PATH=../../dependencies/install/lib/
(๊ทธ๋ ์ง ์์ผ๋ฉด "libvcl.so" ๋๋ฝ์ ๋ํด ๋ถํํจ)์ค๊ฐ ์ถ๋ ฅ์ ์ ์ฅํ๋ ์ต์
์ ๊ฐ์ง๋ ค๋ฉด ๋ณ๋์ ์ฐ๊ธฐ/์ ์ฅ ๊ธฐ๋ฅ ๋์ ๊ฐ ์์
์ ์ฐ๊ธฐ ์ต์
์ ํฌํจํ ์ ์์ต๋๊น?
๋ด๊ฐ ์์ํ๋ ๊ฒ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
img.binarize(write=False)
img.resample(write=True).binarize(write=True)
๋์ ์
img.binarize()
img.write()
img.resample()
img.write()
์ด๊ฒ์ ์๋ง๋ ์
๋ ฅ ์ธ์๋ก ํ์ผ ์ด๋ฆ์ด ํ์ํ ๊ฒ์
๋๋ค
์: img.binarize(write=True, ํ์ผ ์ด๋ฆ='blabla')
@archanasri @cchriste ์๊ฐ?
์ค๊ฐ ์ถ๋ ฅ์ ์ ์ฅํ๋ ์ต์ ์ ๊ฐ์ง๋ ค๋ฉด ๋ณ๋์ ์ฐ๊ธฐ/์ ์ฅ ๊ธฐ๋ฅ ๋์ ๊ฐ ์์ ์ ์ฐ๊ธฐ ์ต์ ์ ํฌํจํ ์ ์์ต๋๊น?
๋ด๊ฐ ์์ํ๋ ๊ฒ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.img.binarize(write=False) img.resample(write=True).binarize(write=True)
๋์ ์
img.binarize() img.write() img.resample() img.write()
Image.write๋ ๋ค๋ฅธ ๋ชจ๋ ๊ฒ๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ์ฐ๊ฒฐ ๊ฐ๋ฅํฉ๋๋ค. ๊ทธ๋ฅ ์ฒด์ธ์ ๋ฃ์ด๋๋ฉด
๋น์ ์ด ์ํ๋.
img.binarize().write(<path>)
img.resample().write(<path>).binarize()
2021๋
1์ 19์ผ ํ์์ผ ์คํ 4:58 Shireen Elhabian [email protected]
์ผ๋ค:
์ด๊ฒ์ ์๋ง๋ ์ ๋ ฅ ์ธ์๋ก ํ์ผ ์ด๋ฆ์ด ํ์ํ ๊ฒ์ ๋๋ค
์: img.binarize(write=True, ํ์ผ ์ด๋ฆ='blabla')@archanasri https://github.com/archanasri @cchriste
https://github.com/cchriste ์๊ฐ?์ค๊ฐ ์ถ๋ ฅ์ ์ ์ฅํ๋ ์ต์ ์ ๊ฐ๊ธฐ ์ํด ๋ค์์ ํฌํจํ ์ ์์ต๋๊น?
๋ณ๋์ ์ฐ๊ธฐ/์ ์ฅ์ด ์๋ ๊ฐ ์์ ๋ด ์ฐ๊ธฐ ์ต์
๊ธฐ๋ฅ?
๋ด๊ฐ ์์ํ๋ ๊ฒ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.img.binarize(์ฐ๊ธฐ=๊ฑฐ์ง)
img.resample(์ฐ๊ธฐ=์ฐธ).binarize(์ฐ๊ธฐ=์ฐธ)๋์ ์
img.binarize()
img.write()
img.resample()
img.write()โ
๋น์ ์ด ์ธ๊ธ๋์๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ๋ฐ๋ ๊ฒ์ ๋๋ค.
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ณ GitHub์์ ํ์ธ
https://github.com/SCIInstitute/ShapeWorks/issues/865#issuecomment-763221837 ,
๋๋ ๊ตฌ๋ ์ทจ์
https://github.com/notifications/unsubscribe-auth/AAJT3EP3HDOHQGC54NMWSJDS2YMA7ANCNFSM4U3KV45Q
.
Image.write๋ ๋ค๋ฅธ ๋ชจ๋ ๊ฒ๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ์ฐ๊ฒฐ ๊ฐ๋ฅํฉ๋๋ค. ์ํ์๋ฉด ์ฒด์ธ์ ๋ฃ์ด์ฃผ์๋ฉด ๋ฉ๋๋ค.
img.binarize().write(<path>) img.resample().write(<path>).binarize()
โฆ
์ฐ๊ธฐ ๊ธฐ๋ฅ๋ ์ฐ๊ฒฐ ๊ฐ๋ฅํ๋ค๋ ๊ฒ์ ์ดํดํฉ๋๋ค. ๊ฐ ์์
๋ด์์ ์ฐ๊ธฐ ์ต์
์ ์ ์ํ ์ ์ ์์ ์ ์ค๊ฐ ์ด๋ฏธ์ง๋ฅผ ์ ์ฅํ ์ง ์ฌ๋ถ์ ๊ด๊ณ์์ด ํ๋์ ๊ธฐ๋ฅ๋ง ๊ฐ๊ณ ํ๋๊ทธ๋ฅผ ์ ๋ฌํ๊ณ ์ฌ์ฉ ์ฌ๋ก๋ฅผ ๋จ์ํํ๋ ๊ฒ์
๋๋ค.
sudo ์ฝ๋์ ์:
function groom(write_flag):
img.binarize(write = write_flag).resize(write = write_flag).crop(write=write_flag)
groom(write_flag = True)
groom(write_flag = False)
์ด๋ ๊ฒ ํ๋ฉด ๋์ผํ ์ฝ๋๋ฅผ ๋ฐ๋ณตํ์ง ์์ ์ ์์ต๋๋ค. ์ด ์์ด๋์ด์ ์คํ ๊ฐ๋ฅ์ฑ์ ์๊ณ ์ถ์ ๋ฟ์ ๋๋ค.
GroomUtils.py ์ธํธ๋ฅผ ํด์ฒดํ๋ ค๋ ์ด์ ์ค ํ๋๋
"helper" ๊ธฐ๋ฅ์ ๊ทธ๋ฃจ๋ฐ ์์
์ ๋ณด๋ค ํฌ๋ช
ํ๊ฒ ๋ง๋๋ ๊ฒ์
๋๋ค.
์ด๋ฌํ ์์
์ ๋ชจ๋๋ฆฌ์ ๊ธฐ๋ฅ์ผ๋ก ํจํค์งํ์ง ์๊ณ ์ ์ฐํ๊ฒ ๋ง๋ค์์ต๋๋ค.
๋งค๊ฐ๋ณ์ ์ ๋ฌ๋ง ํ๋ฉด ํจ์ฌ ์ฝ๊ฒ ๊ฐ๋จํ๊ฒ ๋ง๋ค ์ ์์ต๋๋ค.
์ดํดํ ์ ์๋ ์ฌ์ฉ ์ฌ๋ก ๋ฐ๋ชจ. ์ฐ๋ฆฌ๊ฐ (๋ง์ด) ์ฒด์ธ์ ์ฌ์ฉํ์ง ์๋๋ค๋ฉด
์ฐ๋ฆฌ์ ์, ๊ทธ๊ฒ์ ์ฐ๊ธฐ ๋ฅ๋ ฅ์ ์ ๋ฌํ๋ ๊ฒ์ด ๋งค์ฐ ๊ฐ๋จํฉ๋๋ค
ํ์ํ๋ค๊ณ ํ๋จ๋๋ ๊ฒฝ์ฐ ์ค๊ฐ ๊ฒฐ๊ณผ. ์ง๊ธ ๊ทธ๋ค์ ๋ชจ๋ ๋ณด์ธ๋ค
์ด ๊ฒฐ๊ณผ๊ฐ ํ์ํ ์ฌ์ฉ ์ฌ๋ก๊ฐ ์๊ธฐ ๋๋ฌธ์
ํ๋์ GroomUtils ํจ์๋ ๋ค์ ์ค ์ผ๋ถ(์๋ง๋ ์์) ์งํฉ์ ์ํํฉ๋๋ค.
์ฐ์ฐ์ ์ํํ๊ณ ๊ฒฐ๊ณผ๋ฅผ ์ ์ฅํ๋ฉด ๋ค์ ํจ์๊ฐ ํด๋น ๊ฒฐ๊ณผ๋ฅผ ์ฝ์ต๋๋ค.
์ฒ๋ฆฌ๋ฅผ ๊ณ์ํฉ๋๋ค.
์์ํ๊ธฐ ์ํด ๋ชจ๋ ๊ฒ์ ํ๋ฉดํํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ๋ชจ๋ ์ฌ์ฉ ์ฌ๋ก์ ๋ํด
๊ทธ๋ฅ ํ์์ฒด. ์ฐ๋ฆฌ๊ฐ ๋ณด๊ฒ ๋ ๊ฒ์ ์๋์ ์ผ๋ก
ํน์ ๊ฒฝ์ฐ์ ํ์ ํ๊ฒ ๋ค๋ฅธ ๊ฐ๋จํ ์์
์งํฉ
(์: ์๋ณธ ์ด๋ฏธ์ง๊ฐ "along the ride"์ธ ๊ฒฝ์ฐ). ์ฌ์ฉ์๋ ๋ฌด์์ ํ ๊ฒ์ธ๊ฐ
์ฐ๋ฆฌ์ ์์์ ์ป์ ์ ์๋ ๊ฒ๊ณผ/๋๋
์์ฒด ๋ฐ์ดํฐ์ธํธ์ ๋ํด ์ํํด์ผ ํฉ๋๋ค.
๋ค์์ ๋ด๊ฐ ์ฌ์ฉ์๋ผ๋ฉด ์๋ฎฌ๋ ์ดํธํ๊ณ ์ถ์ ๊ฒ์ ์์ ๋๋ค.
for img in images:
# since we're starting with fuzzy data, we first need to ensure it's a
binary (black and white) image in order to <explain>
img.binarize()
# next, we must ensure images all have the same logical dimensions since
<explain>
img.resize()
# now we'll crop these images using the bounds we computed earlier so they
all encompass the data without leftover space (since it can be costly and
pointless to compute)
img.crop(bounds)
๋ค์๊ณผ ๊ฐ์ ์ด๋ฌํ ์์
์ ์ฐ๊ธฐ๋ฅผ ์ฐ๊ฒฐํ๋ ์๋ฅผ ์ ๊ณตํ ์ ์์ต๋๋ค.
๊ทธ ์ค ํ๋ ๋ค์ .write(<path>
๋ฅผ ์ถ๊ฐํ๋ ๊ฒ๊ณผ ๊ฐ์ต๋๋ค. ์ฐ๋ฆฌ๊ฐ ์ํ์ง ์๋ ๊ฒ์ ์ผ๋ถ์
๋๋ค
"๊ทธ๊ฒ"์ด ๋ชจ๋ ๊ฒฝ์ฐ์ ๋์ผํ์ง ์๊ธฐ ๋๋ฌธ์ "๊ทธ๋ฅ ์ํ"ํ๋ ๊ธฐ๋ฅ
๋ฐ์ดํฐ์ธํธ. ๋์ ์,
์ฐ๋ฆฌ๋ ์ง๊ธ ํ๊ณ ์๋ ์ผ์ด ์ ๋ถ๊ฐ ์๋๋ผ๋ ๊ฒ์ ๋ณด์ฌ์ค์ผ๋ก์จ ์ฌ์ฉ์๋ค์๊ฒ ํ์ ์ค์ด์ค ๊ฒ์
๋๋ค.
๋ณต์กํ๊ณ ๋ณ๊ฒฝํ๊ธฐ ๋งค์ฐ ์ฝ์ต๋๋ค. ๊ทธ๋ค์๊ฒ ์ฃผ๋ ๊ฒ๋ณด๋ค
์๋ง์ ๋งค๊ฐ๋ณ์๊ฐ ์๋ ๋ธ๋๋ฐ์ค ์ธํฐํ์ด์ค์ ํค๋ฅผ ์ ๊ณตํ๊ณ
๊ทธ๋ค์ ์ด์ ํฉ๋๋ค. ์ด๊ฒ์ด ์ ๊ฑฐ ๋ค์์๋ ์ ์ฒด ์์ด๋์ด๋ฅผ ๋ช
ํํ๊ฒํ๋ ๋ฐ ๋์์ด๋๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
GroomUtils์.
2021๋
1์ 25์ผ ์์์ผ ์ค์ 9:49 Krithika Iyer [email protected]
์ผ๋ค:
Image.write๋ ๋ค๋ฅธ ๋ชจ๋ ๊ฒ๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ์ฐ๊ฒฐ ๊ฐ๋ฅํฉ๋๋ค. ๊ทธ๋ฅ ์ฒด์ธ์ ๋ฃ์ด๋๋ฉด
๋น์ ์ด ์ํ๋. img.binarize().write()
img.resample().write().์ด์งํ()
โฆ <#m_7433729883366947300_>์ฐ๊ธฐ ๊ธฐ๋ฅ๋ ์ฐ๊ฒฐ ๊ฐ๋ฅํ๋ค๋ ๊ฒ์ ์ดํดํฉ๋๋ค. ๋์ ์์
๊ฐ ์์ ๋ด์์ ์ฐ๊ธฐ ์ต์ ์ ์ ์ํ๋ ๊ฒ์
์ค๊ฐ ์ด๋ฏธ์ง๋ฅผ ์ ์ฅํ ์ง ์ฌ๋ถ๋ฅผ ์ง์ ํ๊ณ ํ๋๊ทธ๋ฅผ ์ ๋ฌํฉ๋๋ค.
๋๋ ์๋์ค๋ฅผ ์ ํํ๊ณ ์ฌ์ฉ ์ฌ๋ก๋ฅผ ๋จ์ํํฉ๋๋ค.
sudo ์ฝ๋์ ์:๊ธฐ๋ฅ ์ ๋(write_flag):
img.binarize(write = write_flag).resize(write = write_flag).crop(write=write_flag)
์ ๋(write_flag = ์ฐธ)
์ ๋(write_flag = ๊ฑฐ์ง)
์ด๋ ๊ฒ ํ๋ฉด ๋์ผํ ์ฝ๋๋ฅผ ๋ฐ๋ณตํ์ง ์์ ์ ์์ต๋๋ค.
โ
๋น์ ์ด ์ธ๊ธ๋์๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ๋ฐ๋ ๊ฒ์ ๋๋ค.
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ณ GitHub์์ ํ์ธ
https://github.com/SCIInstitute/ShapeWorks/issues/865#issuecomment-766952032 ,
๋๋ ๊ตฌ๋ ์ทจ์
https://github.com/notifications/unsubscribe-auth/AAJT3EJND2F3EDVU75NB6ITS3WOIPANNCNFSM4U3KV45Q
.
@iyerkrithika21 @jadie1
@cchrist์ ๋์ํฉ๋๋ค. ์๋ฏธ์ ์ผ๋ก ํฉ๋ฆฌ์ ์ธ ๊ฒฝ์ฐ(์: ์ด์ง ์ด๋ฏธ์ง ์ฌ์ํ๋ง)๊ฐ ์๋๋ฉด ์ฐ๊ฒฐ์ ์ฌ์ฉํ์ง ๋ง์ญ์์ค. ์ด๋ฌํ ๊ฒฝ์ฐ์๋ ์ด ์ฌ์ํ๋ง(์ฝค๋ณด) ๋จ๊ณ์ ๋ชจ๋ ์ค๊ฐ ์ถ๋ ฅ์ ์์ฑํ ํ์๊ฐ ์์ต๋๋ค. ์ฌ์ฉ ์ฌ๋ก๋ฅผ ๋ฐ๋ฅด๊ธฐ ์ฝ๊ณ ์์ฒด ๋ฌธ์ํํ๋ฉฐ ์ฌ์ฉ์๊ฐ ์ฝ๊ฒ ์ ์ํ๊ณ ์ฌ์ฉ์ ์ง์ ํ ์ ์๋๋ก ํฉ์๋ค.
์ด๋ฏธ์ง ์์ฑ(ํนํ ๋๋ฒ๊น
์ ์ํด ์ผ์์ ์ผ๋ก)์ ๋ค์์ ์ข์ ์์
๋๋ค.
์ฒด์ด๋์ด ํฉ๋ฆฌ์ ์ผ ๋.
# let's see what happened
img.operation(...) -> img.operation(...).write(<path>)
๊ทธ๋ฌ๋ ์ค์ํ ๋จ๊ณ์ผ ๋๋ ์ ์๋ฆฌ์ ๋๋ ๊ฒ์ด ๋ ๋์ ์ ์์ต๋๋ค.
์ฝ๋ฉํธ๊ฐ ์๋ ์์ ์ ๋ผ์ธ.
...
# now let's write the results
img.write(<path>)
2021๋
1์ 25์ผ ์์์ผ ์ค์ 10์ 34๋ถ Shireen Elhabian [email protected]
์ผ๋ค:
@iyerkrithika21 https://github.com/iyerkrithika21 @jadie1
https://github.com/jadie1@cchriste https://github.com/cchriste ์ ๋์ํฉ๋๋ค. ์ฌ์ฉํ์ง ๋ง์
์๋ฏธ์ ์ผ๋ก ํฉ๋นํ์ง ์์ ๊ฒฝ์ฐ(์: ๋ฆฌ์ํ๋ง
๋ฐ์ด๋๋ฆฌ ์ด๋ฏธ์ง), ์ด๋ฌํ ๊ฒฝ์ฐ์๋ ์ฐ๋ฆฌ๋ ๋ชจ๋
์ด ๋ฆฌ์ํ๋ง(์ฝค๋ณด) ๋จ๊ณ์ ์ค๊ฐ ์ถ๋ ฅ์ ๋๋ค. ์ ์ค์ผ์ด์ค๋ฅผ ๋ง๋ค์ด๋ณด์
๋ฐ๋ผํ๊ธฐ ์ฝ๊ณ ์์ฒด ๋ฌธ์ํ๋์ด ์์ผ๋ฉฐ ์ฌ์ฉ์๊ฐ ์ฝ๊ฒ ์ ์ํ๊ณ ์ฌ์ฉ์ ์ง์ ํ ์ ์์ต๋๋ค.โ
๋น์ ์ด ์ธ๊ธ๋์๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ๋ฐ๋ ๊ฒ์ ๋๋ค.
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ณ GitHub์์ ํ์ธ
https://github.com/SCIInstitute/ShapeWorks/issues/865#issuecomment-766983878 ,
๋๋ ๊ตฌ๋ ์ทจ์
https://github.com/notifications/unsubscribe-auth/AAJT3EKKARLKY4VKBRPHJWLS3WTSNANCNFSM4U3KV45Q
.
๊ตฌ์กฐ์กฐ์ ๋จ๊ณ:
์ด๊ฒ์ด ์ด๋ฏธ ์์๋ python_module ๋ถ๊ธฐ๊ฐ ์์์ ๊ธฐ์ตํ์ญ์์ค. 1๋ถ ๋์ ๋ณํฉ๋์ง ์์์ง๋ง ๋๊ตฐ๊ฐ ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ฉด ๊ณ์ ์๋ ค์ฃผ์ธ์. ๋ด ์ฐ์ ์์ ๋ชฉ๋ก์ ์์ต๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
๊ตฌ์กฐ์กฐ์ ๋จ๊ณ: