์ด ํ๋ก์ ํธ๋ ComfyUI(AGPL-3.0)๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์์ ๋ ๋ฒ์ ์ ๋๋ค. ์๋ณธ ํ๋ก์ ํธ: https://github.com/comfyanonymous/ComfyUI comfy-Custom-mask-nodes ์ด ํ๋ก์ ํธ๋ ComfyUI์ฉ ํ์ฅ ๋ง์คํฌ ์ฒ๋ฆฌ ๋ ธ๋๋ค์ ์ ๊ณตํฉ๋๋ค. ๋ง์คํฌ ๋ณํ, ๋ฏธ๋ฆฌ๋ณด๊ธฐ, ํฉ์ฑ ๋ฑ ๋ค์ํ ๋ง์คํฌ ์ ํธ๋ฆฌํฐ ๊ธฐ๋ฅ์ ํฌํจํ๊ณ ์์ต๋๋ค.
ComfyUI ๊ธฐ๋ณธ ๋ง์คํฌ ๋ ธ๋๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ์ฌ, ๋ง์คํฌ ์ฐ์ฐ ๊ณผ์ ์์ ๋ฐ์ํ๋ ์ํ ์ฑ๋ ์ค๋ฅ๋ฅผ ์ค์ด๊ณ ๋ณด๋ค ์์ ์ ์ธ ๋ง์คํฌ ์ฒ๋ฆฌ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋๋ก ๊ฐ์ ๋์์ต๋๋ค.
-Attention-
์ด ํ๋ก์ ํธ๋ ComfyUI 0.092์ด์์์ ์ ์์๋ํ๋ ๋ฒ์ ์ ๋๋ค. ComfyUI 11.1์์๋ ๊ธฐ๋ํฉ๋๋ค. ๊ทธ๋ํฝ์นด๋๋ฅผ ์ฌ์ฉํ์ง ์๋ ์ฒ๋ฆฌ๊ธฐ ๋๋ฌธ์ CPU๋ AMD์์๋ ๊ธฐ๋๋ ๊ฒ๋๋ค.
์ฃผ์ ๊ธฐ๋ฅ (Features) Safe MaskToImage Node: ๋ง์คํฌ๋ฅผ ์ด๋ฏธ์ง๋ก ๋ณํ (์: ๊ทธ๋ ์ด์ค์ผ์ผ ์๊ฐํ).
Safe ImageToMask Node: ์ด๋ฏธ์ง์์ ํน์ ์ฑ๋์ ๊ธฐ๋ฐ์ผ๋ก ๋ง์คํฌ ์ถ์ถ.
Safe ImageColorToMask Node: ์ด๋ฏธ์ง์ ํน์ ์์ ๋ฒ์๋ก๋ถํฐ ๋ง์คํฌ ์์ฑ.
Safe SolidMask Node: ๊ท ์ผํ ๊ฐ์ผ๋ก ์ฑ์์ง ๋ง์คํฌ ์์ฑ.
Safe InvertMask Node: ๊ธฐ์กด ๋ง์คํฌ ๋ฐ์ .
Safe ImageCompositeMasked Node: ๋ง์คํฌ๋ฅผ ์ฌ์ฉํ์ฌ ์ด๋ฏธ์ง ํฉ์ฑ
Safe MaskComposite Node: ์ฌ๋ฌ ๋ง์คํฌ๋ฅผ ํฉ์ฑ.
Safe CropMask Node: ์ง์ ๋ ์์ญ์ผ๋ก ๋ง์คํฌ ์๋ผ๋ด๊ธฐ.
Safe Select CropMask Node:์์ ํ๋ ธ๋. ์ํ์ข์ฐ๋ก ์ง์ ์๋ฅผ ํฝ์ ์ ์ง์ .
**ImagePadding : ์ ๋ ฅ ์ด๋ฏธ์ง๋ฅผ ์ํ์ข์ฐ๋ก ์ง์ ํ ํฝ์ ๋งํผ ํจ๋ฉํ์ฌ ํ์ฅ
**MaskPadding : ์ ๋ ฅ ๋ง์คํฌ๋ฅผ ์ํ์ข์ฐ๋ก ์ง์ ํ ํฝ์ ๋งํผ ํจ๋ฉํ์ฌ ํ์ฅ
Safe FeatherMask Node: ๋ง์คํฌ์ ํ๋๋ง(๋ถ๋๋ฌ์ด ๊ฐ์ฅ์๋ฆฌ) ์ ์ฉ.
Safe GrowMask Node: ๋ง์คํฌ ์์ญ์ ํฝ์ ํฌ๊ธฐ๋ฅผ ๋ฐ๊นฅ์ชฝ์ผ๋ก ํ์ฅ(ํ์ฅํฝ์ ๊ธฐ์ค25[์ฐ์์ผ๋ก ์ฐ๋ฉด ์ถ๊ฐํ์ฅ๊ฐ๋ฅ]).
Safe ShrinkMask Node: ๋ง์คํฌ ์์ญ์ ํฝ์ ํฌ๊ธฐ๋ฅผ ์์ชฝ์ผ๋ก ์ถ์.
Safe TransformMask Node: ๋ง์คํฌ ์์ญ์์ฒด์ ํฌ๊ธฐ๋ฅผ ์์ ํฝ์ ๋ก ์ฌ์กฐ์ .
Safe ThresholdMask Node: ๊ทธ๋ ์ด์ค์ผ์ผ ๋ง์คํฌ๋ฅผ ์๊ณ๊ฐ์ผ๋ก ์ด์ง ๋ง์คํฌ๋ก ๋ณํ.
Safe MaskPreview Node: GUI์์ ๋ง์คํฌ ์ถ๋ ฅ ๋ฏธ๋ฆฌ๋ณด๊ธฐ.
Safe MaskSaveOnly: ๋ง์คํฌ ๋ฐ์ดํฐ๋ฅผ ํ๋ฐฑ์ด๋ฏธ์ง๋ก ์ ์ฅ.
Safe MaskSaveLink: ๋ง์คํฌ ๋ฐ์ดํฐ๋ฅผ ํ๋ฐฑ์ด๋ฏธ์ง๋ก ์ ์ฅ ํ ๋ง์คํฌ ์ฐ๊ฒฐ์ ์ถ๋ ฅ.
**SafeMaskChecker : ํธ์ง ๋ง์คํฌ๋ฅผ ์ง์ ์์์ผ๋ก ์๊ฐํํ์ฌ ์์ ํ๊ฒ ํ์ธ
**SafeMaskDiffChecker : ์๋ณธ๊ณผ ํธ์ง ๋ง์คํฌ์ ์ฐจ์ด๋ฅผ ๊ฐ์กฐํ์ฌ ๋ณ๊ฒฝ๋ ์์ญ๋ง ์๊ฐํ
์ค์น ๋ฐฉ๋ฒ (Getting Started) Installation ZIP ๋ค์ด๋ก๋ ์ด ์ ์ฅ์๋ฅผ .zip ํ์ผ๋ก ๋ค์ด๋ก๋ํฉ๋๋ค.
custom_nodes ํด๋์ ๋ฐฐ์น ์์ถ์ ํด์ ํ ํ, ComfyUI ์ค์น ๊ฒฝ๋ก์ custom_nodes ๋๋ ํ ๋ฆฌ์ ํด๋๋ฅผ ๋ฃ์ต๋๋ค.
ComfyUI ์ฌ์์ ComfyUI๋ฅผ ์ฌ์์ํ๋ฉด ์๋ก์ด ์ปค์คํ ๋ ธ๋๊ฐ ๋ก๋๋ฉ๋๋ค.
์ฌ์ฉ๋ฒ (Usage)
์๋ํฐ
Safe ImageCompositeMasked Node : ์์ ํ ๋
ธ๋. ๋ง์คํฌ๋ฅผ ์ด์ฉํด ๋ ์ด๋ฏธ์ง๋ฅผ ํฉ์ฑํ ์ ์์ด, ๋ถ๋ถ ํฉ์ฑ์ด๋ ๋ธ๋ ๋ฉ ์์
์ ์ ํฉ.
Inputs:
destination: ํฉ์ฑ ๋์ ์ด๋ฏธ์ง
source: ๋ฎ์ด์์ธ ์ด๋ฏธ์ง
x, y: ์์น ์คํ์
mask: ๋ธ๋ ๋ฉ์ ์ ์ดํ๋ ์ ํ์ ๋ง์คํฌ
Outputs:
image: ํฉ์ฑ๋ ์ด๋ฏธ์ง
Safe CropMask Node : ์์ ํ๋ ํ์ง๋ง ์๋ผ๋ด๋ ์์น๋ ์ถ๊ฐ์กฐ์ ํ์.
Inputs:
mask: ๋ง์คํฌ ํ
์
x, y: ์๋ผ๋ผ ์์น
width, height: ์๋ผ๋ผ ํฌ๊ธฐ
Outputs:
mask: ์๋ผ๋ธ ๋ง์คํฌ
Safe Select CropMask Node : ์ ๊ท๋
ธ๋. ์ํ์ข์ฐ๋ก ์ง์ ์๋ฅผ ํฝ์
์ ์ง์ .
Inputs:
mask: ๋ง์คํฌ ํ
์
L, R, T, B: ์๋ผ๋ผ ์์น ๋ฐ ํฌ๊ธฐ
Outputs:
mask: ์๋ผ๋ธ ๋ง์คํฌ
Safe MaskComposite Node : ์ถฉ๋ ์์ธ์ ๊ฐ์. ์์ ํ ๋
ธ๋. ์ค๋ฅ๋ฐ์์ ๋ฆฌํดํ์ฌ ์์ ํ๋ฅผ ์ ๋ํด ์ฌ์ถ๋ ฅํจ.
Inputs:
mask_a: ์ฒซ ๋ฒ์งธ ๋ง์คํฌ
mask_b: ๋ ๋ฒ์งธ ๋ง์คํฌ
blend_mode: ๊ฒฐํฉ ๋ฐฉ์ (add, multiply ๋ฑ)
Outputs:
mask: ํฉ์ฑ๋ ๋ง์คํฌ
Safe FeatherMask Node : ๋ง์คํฌ ํ๋๋ง ๋
ธ๋. ๊ธฐ๋ณธ๋
ธ๋์ ํฌ๊ฒ ์ฐจ์ด๋ ์์ง๋ง, ์ถฉ๋ ์์ฒด๋ ์ค์.
Inputs:
mask: ๋ง์คํฌ ํ
์
radius: ํ๋๋ง ๋ฐ๊ฒฝ
Outputs:
mask: ํ๋๋ง๋ ๋ง์คํฌ
Safe GrowMask Node : ์คํ๋
ธ๋. ์์ ํ๋ ํ์ง๋ง ๊ฒฐ๊ณผ๋ ๋ณด์ฅ์๋จ.
Inputs:
mask: ๋ง์คํฌ ํ
์
amount: ํ์ฅํ ํฝ์
์
Outputs:
mask: ํ์ฅ๋ ๋ง์คํฌ
Safe ThresholdMask Node : ์คํ๋
ธ๋. ์์ ํ๋ ํ์ง๋ง ๊ฒฐ๊ณผ๋ ๋ณด์ฅ์๋จ.
Inputs:
mask: ๋ง์คํฌ ํ
์
threshold: ์๊ณ๊ฐ (0โ1)
Outputs:
mask: ์ด์งํ๋ ๋ง์คํฌ
๊ธฐ๋ณธํ
Safe MaskToImage Node : ์์ ํ ๋
ธ๋. ์ค๋ฅ๋ฐ์์ ๋ฆฌํดํ์ฌ ์์ ํ๋ฅผ ์ ๋ํด ์ฌ์ถ๋ ฅํจ.
Inputs:
mask: ๋ณํํ ๋ง์คํฌ ํ
์
Outputs:
image: ๋ง์คํฌ๋ฅผ ํํํ๋ ๊ทธ๋ ์ด์ค์ผ์ผ ์ด๋ฏธ์ง
Safe ImageToMask Node : ์์ ํ ๋
ธ๋. ์ค๋ฅ๋ฐ์์ ๋ฆฌํดํ์ฌ ์์ ํ๋ฅผ ์ ๋ํด ์ฌ์ถ๋ ฅํจ.
Inputs:
image: ์๋ณธ ์ด๋ฏธ์ง
channel: ์ถ์ถํ ์ฑ๋ (red, green, blue, alpha)
Outputs:
mask: ์์ฑ๋ ๋ง์คํฌ
Safe ImageColorToMask Node : ์์ ํ ๋
ธ๋. ํน์ ์์ ๋ฒ์๋ฅผ ์ง์ ํด ๋ง์คํฌ๋ฅผ ์์ฑํ ์ ์์ด, ์์ ๊ธฐ๋ฐ ์ ํ ์์
์ ์ ์ฉ.
Inputs:
image: ์๋ณธ ์ด๋ฏธ์ง
color: ์ง์ ๋ ์์ ๋๋ ๋ฒ์
Outputs:
mask: ์์ ์ ํ์ผ๋ก ์์ฑ๋ ๋ง์คํฌ
Safe SolidMask Node : ์ถฉ๋ ์์ธ์ ๊ฐ์. ์์ ํ ๋
ธ๋. ์ค๋ฅ๋ฐ์์ ๋ฆฌํดํ์ฌ ์์ ํ๋ฅผ ์ ๋ํด ์ฌ์ถ๋ ฅํจ.
Inputs:
width: ๋ง์คํฌ ๋๋น
height: ๋ง์คํฌ ๋์ด
value: ์ฑ์ธ ๊ฐ (0โ1)
Outputs:
mask: ๋จ์ ๋ง์คํฌ
Safe InvertMask Node : ์์ ํ ๋
ธ๋. ์ค๋ฅ๋ฐ์์ ๋ฆฌํดํ์ฌ ์์ ํ๋ฅผ ์ ๋ํด ์ฌ์ถ๋ ฅํจ.
Inputs:
mask: ๋ฐ์ ํ ๋ง์คํฌ ํ
์
Outputs:
mask: ๋ฐ์ ๋ ๋ง์คํฌ
๊ธฐ๋ณธํ
Safe MaskToImage Node : ์์ ํ ๋
ธ๋. ์ค๋ฅ๋ฐ์์ ๋ฆฌํดํ์ฌ ์์ ํ๋ฅผ ์ ๋ํด ์ฌ์ถ๋ ฅํจ.
Inputs:
mask: ๋ณํํ ๋ง์คํฌ ํ
์
Outputs:
image: ๋ง์คํฌ๋ฅผ ํํํ๋ ๊ทธ๋ ์ด์ค์ผ์ผ ์ด๋ฏธ์ง
Safe ImageToMask Node : ์์ ํ ๋
ธ๋. ์ค๋ฅ๋ฐ์์ ๋ฆฌํดํ์ฌ ์์ ํ๋ฅผ ์ ๋ํด ์ฌ์ถ๋ ฅํจ.
Inputs:
image: ์๋ณธ ์ด๋ฏธ์ง
channel: ์ถ์ถํ ์ฑ๋ (red, green, blue, alpha)
Outputs:
mask: ์์ฑ๋ ๋ง์คํฌ
Safe ImageColorToMask Node : ์์ ํ ๋
ธ๋. ํน์ ์์ ๋ฒ์๋ฅผ ์ง์ ํด ๋ง์คํฌ๋ฅผ ์์ฑํ ์ ์์ด, ์์ ๊ธฐ๋ฐ ์ ํ ์์
์ ์ ์ฉ.
Inputs:
image: ์๋ณธ ์ด๋ฏธ์ง
color: ์ง์ ๋ ์์ ๋๋ ๋ฒ์
Outputs:
mask: ์์ ์ ํ์ผ๋ก ์์ฑ๋ ๋ง์คํฌ
์๋ํฐ
Safe ImageCompositeMasked Node : ์์ ํ ๋
ธ๋. ๋ง์คํฌ๋ฅผ ์ด์ฉํด ๋ ์ด๋ฏธ์ง๋ฅผ ํฉ์ฑํ ์ ์์ด, ๋ถ๋ถ ํฉ์ฑ์ด๋ ๋ธ๋ ๋ฉ ์์
์ ์ ํฉ.
Inputs:
destination: ํฉ์ฑ ๋์ ์ด๋ฏธ์ง
source: ๋ฎ์ด์์ธ ์ด๋ฏธ์ง
x, y: ์์น ์คํ์
mask: ๋ธ๋ ๋ฉ์ ์ ์ดํ๋ ์ ํ์ ๋ง์คํฌ
Outputs:
image: ํฉ์ฑ๋ ์ด๋ฏธ์ง
Safe MaskComposite Node : ์ถฉ๋ ์์ธ์ ๊ฐ์. ์์ ํ ๋
ธ๋. ์ค๋ฅ๋ฐ์์ ๋ฆฌํดํ์ฌ ์์ ํ๋ฅผ ์ ๋ํด ์ฌ์ถ๋ ฅํจ.
Inputs:
mask_a: ์ฒซ ๋ฒ์งธ ๋ง์คํฌ
mask_b: ๋ ๋ฒ์งธ ๋ง์คํฌ
blend_mode: ๊ฒฐํฉ ๋ฐฉ์ (add, multiply ๋ฑ)
Outputs:
mask: ํฉ์ฑ๋ ๋ง์คํฌ
๋ณํ
Safe SolidMask Node : ์์ ํ ๋
ธ๋. ์ค๋ฅ๋ฐ์์ ๋ฆฌํดํ์ฌ ์์ ํ๋ฅผ ์ ๋ํด ์ฌ์ถ๋ ฅํจ.
Inputs:
width: ๋ง์คํฌ ๋๋น
height: ๋ง์คํฌ ๋์ด
value: ์ฑ์ธ ๊ฐ (0โ1)
Outputs:
mask: ๋จ์ ๋ง์คํฌ
Safe InvertMask Node : ์์ ํ ๋
ธ๋. ์ค๋ฅ๋ฐ์์ ๋ฆฌํดํ์ฌ ์์ ํ๋ฅผ ์ ๋ํด ์ฌ์ถ๋ ฅํจ.
Inputs:
mask: ๋ฐ์ ํ ๋ง์คํฌ ํ
์
Outputs:
mask: ๋ฐ์ ๋ ๋ง์คํฌ
Safe GrowMask Node : ์์ ํ ๋
ธ๋. ๋ง์คํฌ์ ํฝ์
ํฌ๊ธฐ๋ฅผ ๋๋ฆผ. ์ต๋์ ํ ํฝ์
์ 25๋ก ๋ณ๊ฒฝ. ์ฌํ์ฅ์ ์ถ๊ฐ์ฐ๊ฒฐํ๋ฉด ๋ฉ๋๋ค.
Inputs:
mask: ๋ง์คํฌ ํ
์
amount: ํ์ฅํ ํฝ์
์
Outputs:
mask: ํ์ฅ๋ ๋ง์คํฌ
Safe ShrinkMask Node : ์ ๊ท๋
ธ๋. ๋ง์คํฌ์ ํฝ์
์ ์
๋ ฅ์น์ ๋น๋กํด์ ์ถ์ํฉ๋๋ค.
Inputs:
mask: ๋ง์คํฌ ํ
์
amount: ์ถ์ํ ํฝ์
์
Outputs:
mask: ํ์ฅ๋ ๋ง์คํฌ
Safe TransformMask Node : ์ ๊ท๋
ธ๋. ๋ง์คํฌ๋ฅผ ์
๋ ฅ์น์ ๋ง์ถฐ ํฌ๊ธฐ๋ฅผ ์กฐ์ . ํฝ์
๋จ์๋ก ์กฐ์ ํฉ๋๋ค.
Inputs:
mask: ๋ง์คํฌ ํ
์
amount: ์กฐ์ ํ ๊ฐ๋ก ํฝ์
์
amount: ์กฐ์ ํ ์ธ๋ก ํฝ์
์
Outputs:
mask: ๋ณํ๋ ๋ง์คํฌ
Safe ThresholdMask Node : ์์ ํ๋
ธ๋. ์๊ณ๊ฐ์ ๋ง์ถฐ ๋ง์คํฌ๋ฅผ ์ด์งํํฉ๋๋ค.
Inputs:
mask: ๋ง์คํฌ ํ
์
threshold: ์๊ณ๊ฐ (0โ1)
Outputs:
mask: ์ด์งํ๋ ๋ง์คํฌ
ImagePadding Node : ์ด๋ฏธ์ง์ ์บ๋ฒ์ค ํฌ๊ธฐ๋ฅผ ์ง์ ํ ๋ฐฉํฅ์ผ๋ก ๋๋ ค์ ์น ํจ. ํ๋ฐฑ ์ง์, ๊ฒฝ๊ณ ํ๋๋ง ์ง์. ์ด๋ฏธ์ง๊ฐ ์๋ณธ์ด์ด์ ์๋ฌ์ํ์ด ์์ด์ด๋ ๋ฆฌํด ํ ๋ณด์ ์ฒ๋ฆฌํ์ฌ ์ ์ฉํจ.
Inputs:
image : ์
๋ ฅ ์ด๋ฏธ์ง(๋ฐฐ์น๋ฐ์ดํฐ ์ฒดํน ํ ์๋๊ฒฝ์ฐ ๋ฐฐ์น์ฐจ์ ์ถ๊ฐํ์ฌ ๋ฆฌํด ํ ์ฌ์ฐ๊ฒฐ)
pad_top, pad_bottom, pad_left, pad_right : ๊ฐ ๋ฐฉํฅ๋ณ ํจ๋ฉ ํฌ๊ธฐ
padding_color : ํจ๋ฉ ์์ญ ์์(black/white)
feather_strength : ํจ๋ฉ ๊ฒฝ๊ณ ํ๋๋ง ๊ฐ๋
Outputs:
image : ํจ๋ฉ์ด ์ ์ฉ๋ ์ด๋ฏธ์ง ์ฒ๋ฆฌ๋ฐฉ์ ์
๋ ฅ ์ด๋ฏธ์ง๋ฅผ ๋ฐฐ์น ์ฐจ์ ๋ณด์ ํ ์ง์ ํ ํฝ์
๋งํผ ์ํ์ข์ฐ์ ํจ๋ฉ์ ์ถ๊ฐํ๊ณ ์ ํํ ์์์ผ๋ก ์ฑ์ MaskPadding Node : ๋ง์คํฌ์ ์บ๋ฒ์ค ํฌ๊ธฐ๋ฅผ ์ง์ ํ ๋ฐฉํฅ์ผ๋ก ๋๋ ค์ ์น ํจ. ํ๋ฐฑ ์ง์, ๊ฒฝ๊ณ ํ๋๋ง ์ง์. ๋ง์คํฌ๋ฐ์ดํฐ๊ฐ ์๋ณธ์ด์ด์ ์๋ฌ์ํ์ด ์์ด๋ ๋ฆฌํด ํ ๋ณด์ ์ฒ๋ฆฌํ์ฌ ์ ์ฉํจ. Inputs: mask : ์
๋ ฅ ๋ง์คํฌ(๋ฐฐ์น๋ฐ์ดํฐ ์ฒดํน ํ ์๋๊ฒฝ์ฐ ๋ฐฐ์น์ฐจ์ ์ถ๊ฐํ์ฌ ๋ฆฌํด ํ ์ฌ์ฐ๊ฒฐ) pad_top, pad_bottom, pad_left, pad_right : ๊ฐ ๋ฐฉํฅ๋ณ ํจ๋ฉ ํฌ๊ธฐ
padding_color : ํจ๋ฉ ์์ญ ์์(black/white)
feather_strength : ํจ๋ฉ ๊ฒฝ๊ณ ํ๋๋ง ๊ฐ๋
Outputs:
mask : ํจ๋ฉ์ด ์ ์ฉ๋ ๋ง์คํฌ ์ฒ๋ฆฌ๋ฐฉ์ ์
๋ ฅ ๋ง์คํฌ๋ฅผ ๋ฐฐ์น ์ฐจ์ ๋ณด์ ํ ์ง์ ํ ํฝ์
๋งํผ ์ํ์ข์ฐ์ ํจ๋ฉ์ ์ถ๊ฐํ๊ณ ์ ํํ ์์์ผ๋ก ์ฑ์
์ปทํ
Safe CropMask Node : ์์ ํ๋ ํ์ง๋ง ์๋ผ๋ด๋ ์์น๋ ์ถ๊ฐ์กฐ์ ํ์. ๊ธฐ๋ณธ๊ฐ์ ์ผ์ชฝ ์์
๋๋ค.
Inputs:
mask: ๋ง์คํฌ ํ
์
x, y: ์๋ผ๋ผ ์์น
width, height: ์๋ผ๋ผ ํฌ๊ธฐ
Outputs:
mask: ์๋ผ๋ธ ๋ง์คํฌ
Safe Select CropMask Node : ์์ ํ๋
ธ๋. ์ค์์ ๊ธฐ์ค์ผ๋ก ์ํ์ข์ฐ๋ก ์ง์ ์๋ฅผ ํฝ์
์ ์ง์ .
Inputs:
mask: ๋ง์คํฌ ํ
์
L, R, T, B: ์๋ผ๋ผ ์์น ๋ฐ ํฌ๊ธฐ
Outputs:
mask: ์๋ผ๋ธ ๋ง์คํฌ
Safe FeatherMask Node : ๋ง์คํฌ ํ๋๋ง ๋
ธ๋. ๊ธฐ๋ณธ๋
ธ๋์ ํฌ๊ฒ ์ฐจ์ด๋ ์์ง๋ง, ์ถฉ๋ ์์ฒด๋ ์ค์.
Inputs:
mask: ๋ง์คํฌ ํ
์
radius: ํ๋๋ง ๋ฐ๊ฒฝ
Outputs:
mask: ํ๋๋ง๋ ๋ง์คํฌ
์ฒด์ปค
Safe MaskPreview Node : ์์ ํ ๋
ธ๋. '๊ฐ์ด ๋จ์์๊ธด ํ๋ค๋ฉด', ์ค๋ฅ๋ฐ์์ ๋ฆฌํดํ์ฌ ์์ ํ๋ฅผ ์ ๋ํด ์ฌ์ถ๋ ฅํจ.(๊นจ์ง๋ ๋ฒ๊ทธ ์์ .)
Inputs:
mask: ๋ง์คํฌ ํ
์
Outputs:
image: ๋ง์คํฌ ๋ฏธ๋ฆฌ๋ณด๊ธฐ ์ด๋ฏธ์ง
Safe MaskSaveOnly Node : ์์ ํ ๋
ธ๋. ๋ง์คํฌ๋ฅผ ์ฝ๊ณ '์ฝคํผUI ์ถ๋ ฅ ํด๋์ ๋ง์คํฌํด๋์ ์ ์ฅ'. ์ค๋ฅ๋ฐ์์ ๋ฆฌํดํ์ฌ ์์ ํ๋ฅผ ์ ๋ํด ์ฌ์ถ๋ ฅํจ.
Inputs:
mask: ๋ง์คํฌ ํ
์
Safe MaskSaveLink Node : ์์ ํ ๋
ธ๋. ๋ง์คํฌ๋ฅผ ์ฝ๊ณ '์ฝคํผUI ์ถ๋ ฅ ํด๋์ ๋ง์คํฌํด๋์ ์ ์ฅ ํ' ๋ง์คํฌ ์ถ๋ ฅ ๋
ธ๋๋ก ์ฐ๊ฒฐ. ์ค๋ฅ๋ฐ์์ ๋ฆฌํดํ์ฌ ์์ ํ๋ฅผ ์ ๋ํด ์ฌ์ถ๋ ฅํจ.
Inputs:
mask: ๋ง์คํฌ ํ
์
Outputs:
mask: ๋ง์คํฌ ํ
์
SafeMaskChecker Node : ์์ ํ ๋
ธ๋. ์๋ณธ์ด๋ฏธ์ง์ ๋ง์คํฌ ์์ ์์ ๋ง์คํฌ๋ฅผ ๋ฎ์ด์ ์ด๋ฏธ์ง ๋ฏธ๋ฆฌ๋ณด๊ธฐ์ ์ฐ๊ฒฐํ์ฌ ์ฌ์ ํ์ธ ๊ฐ๋ฅํ๊ฒ ํจ.(๊นจ์ง๋ ๋ฒ๊ทธ ์์ .)
Inputs:
base_mask : ๊ธฐ์ค ๋ง์คํฌ(์๋ณธ์ด๋ฏธ์ง๋ฅผ ๋ง์คํฌ ์ปจ๋ฒํธ๋ก ์ถ๋ ฅํ ์ฐ๊ฒฐ)
edit_mask : ํธ์ง ๋ง์คํฌ(๋ง์คํฌ ์๋ํฐ๋ก ์์ ์์ญ ๊ทธ๋ฆฐ ํ ์ฐ๊ฒฐ)
color : ํ์ ์์(red/green/blue)
Outputs:
preview : ํธ์ง ๋ง์คํฌ๋ฅผ ์์ ์ค๋ฒ๋ ์ด๋ก ํํํ ์ด๋ฏธ์ง ์ฒ๋ฆฌ๋ฐฉ์ ํธ์ง ๋ง์คํฌ๋ฅผ ํ๋ฐฑ ์ด๋ฏธ์ง๋ก ๋ณํ ํ ์ ํํ ์์์ผ๋ก ์ค๋ฒ๋ ์ดํ์ฌ ์๊ฐ์ ์ผ๋ก ํ์ธ ๊ฐ๋ฅํ๊ฒ ์ถ๋ ฅ
SafeMaskDiffChecker Node : ์๋ณธ์ด๋ฏธ์ง์ ๋ง์คํฌ์ ์์ ๋ง์คํฌ์ ์ฐจ์ด์ ์ ๋์กฐ ํ ๋ณ๊ฒฝ์์์ ์ ์ด๋ฏธ์ง ๋ฏธ๋ฆฌ๋ณด๊ธฐ์ ์ฐ๊ฒฐํ์ฌ ์ฌ์ ํ์ธ ๊ฐ๋ฅํ๊ฒ ํจ.(๊นจ์ง๋ ๋ฒ๊ทธ ์์ .)
Inputs:
base_mask : ์๋ณธ ๋ง์คํฌ(์๋ณธ์ด๋ฏธ์ง๋ฅผ ๋ง์คํฌ ์ปจ๋ฒํธ๋ก ์ถ๋ ฅํ ์ฐ๊ฒฐ)
edit_mask : ์์ ๋ง์คํฌ(๋ง์คํฌ ์๋ํฐ๋ก ์์ ์์ญ ๊ทธ๋ฆฐ ํ ์ฐ๊ฒฐ)
color : ๊ฐ์กฐ ์์(red/green/blue)
Outputs:
preview : ๋ณ๊ฒฝ๋ ์์ญ์ ์์์ผ๋ก ๊ฐ์กฐํ ์ด๋ฏธ์ง ์ฒ๋ฆฌ๋ฐฉ์ ์๋ณธ๊ณผ ํธ์ง ๋ง์คํฌ๋ฅผ ๋น๊ตํ์ฌ ์ฐจ์ด ์์ญ๋ง ์ถ์ถ, ์ ์ฒด ์์ญ์ ๋ฐํฌ๋ช
์ฒ๋ฆฌํ๊ณ ์ฐจ์ด ์์ญ์ ์ง์ ์์์ผ๋ก ๊ฐ์กฐ