๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ–ฅ๏ธ/Frontend

JavaScript๋กœ ์˜์ƒ์ฒ˜๋ฆฌ ์†Œํ”„ํŠธ์›จ์–ด ๋งŒ๋“ค๊ธฐ (Beta ver.): ๋ธ”๋Ÿฌ ํšจ๊ณผ ์กฐ์ ˆํ•˜๊ธฐ + ๊ฒฝ๊ณ„๊ฐ’ ์ฒ˜๋ฆฌํ•˜๊ธฐ

by HanaV 2023. 4. 14.
728x90

๋งˆ์Šคํฌ์˜ ํฌ๊ธฐ๋ฅผ value by value๋กœ ๊ฐ€๋ณ€ํ–‰๋ ฌ๋กœ ๋ฐ›์•„์„œ value๊ฐ’์— ๋”ฐ๋ผ ๋ณ€ํ•˜๊ฒŒ ํ•  ์ˆ˜๋„ ์žˆ๊ฒ ์ง€๋งŒ, 
๊ฐ€์šฐ์‹œ์•ˆ ๋ธ”๋Ÿฌ๊ฐ€ ์•„๋‹ˆ๋ผ ๊ธฐ๋ณธ ๋ธ”๋Ÿฌ๋กœ ํ•œ๋‹ค๋ฉด ๋งˆ์Šคํฌ๋ฅผ ์“ฐ์ง€ ์•Š๊ณ ๋„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋‹ค.

1. value๊ฐ€ 1์ด๋ผ๋ฉด ์›์‹œ ํ”ฝ์…€๋กœ๋ถ€ํ„ฐ 1๋งŒํผ ๊ฑฐ๋ฆฌ์— ์žˆ๋Š” ํ”ฝ์…€๋“ค์˜ ํ‰๊ท ์„ ๋ฐ›๋Š”๋‹ค. ์ฆ‰, ์›์‹œ ํ”ฝ์…€์„ ํฌํ•จํ•ด 3by3ํฌ๊ธฐ ํ–‰๋ ฌ ์•ˆ์— ์žˆ๋Š” ํ”ฝ์…€์„ ํ‰๊ท ์œผ๋กœ ๋ฐ›๊ฒŒ ๋œ๋‹ค.
value๊ฐ€ 2๋ฉด 5by5ํ–‰๋ ฌ, value๊ฐ€ 3์ด๋ฉด 7by7ํ–‰๋ ฌ, value๊ฐ€ n์ด๋ฉด (2n+1) by (2n+1) ํ–‰๋ ฌ ์•ˆ์— ์žˆ๋Š” ํ”ฝ์…€๋“ค์˜ ํ‰๊ท ์„ ๋ฐ›๋Š” ๊ฒƒ์ด๋‹ค.

2. ๊ฐ€์žฅ์ž๋ฆฌ์— ์žˆ๋Š” ํ”ฝ์…€์„ ์œ„ํ•ด์„œ (2value+width) by (2value+width) ํฌ๊ธฐ์˜ ์ž„์‹œ ์ž…๋ ฅ ๋ฐฐ์—ด์„ ๋งŒ๋“ค์–ด์ฃผ๊ณ , 127๋กœ ์ฑ„์›Œ์ค€๋‹ค. ๋” ๋†’์€ ์™„์„ฑ๋„๋ฅผ ์œ„ํ•ด์„œ๋Š” ๊ฐ€์žฅ์ž๋ฆฌ ํ”ฝ์…€๊ณผ ๊ฐ™์€ ๊ฐ’์œผ๋กœ ๋Š˜๋ ค์ฃผ๋ฉด ๋˜๋Š”๋ฐ, ์ค‘์š”๋„์— ๋น„ํ•ด์„œ ์ฝ”๋“œ๊ฐ€ ๋ณต์žกํ•ด์งˆ ๊ฒƒ ๊ฐ™์•„์„œ ๊ทธ๋ƒฅ ์ค‘๊ฐ„ ๊ฐ’์ธ 127.0์œผ๋กœ ์ฑ„์šฐ๋Š” ๊ฒƒ์œผ๋กœ ํ–ˆ๋‹ค.

for(var i=0; i<inH+2*value; i++)
                    tmpInImage[i] = new Array(inW+2*value).fill(127.0);

3. ๋งŒ๋“  ์ž„์‹œ ๋ฐฐ์—ด ๊ฐ€์šด๋ฐ์— inImage๋ฅผ ์˜ฎ๊ฒจ์ค€๋‹ค.

                for(var i=0; i<inH; i++) 
                    for (var k=0; k<inW; k++) 
                        tmpInImage[i+value][k+value] = inImage[i][k];

4. ์ด์ œ ๋งˆ์Šคํฌ๋ž‘ ๋™์ผํ•˜๊ฒŒ ์ฃผ๋ณ€ ํ”ฝ์…€๋“ค์˜ ํ‰๊ท ์„ ๊ตฌํ•ด์„œ ์›์‹œ ํ”ฝ์…€์— ๊ทธ ๊ฐ’์„ ๋„ฃ์œผ๋ฉด ๋˜๋ฏ€๋กœ, for ๋ฌธ ์•ˆ์— for๋ฌธ์„ ๋˜ ์‚ฌ์šฉํ•˜๋ฉด ๋  ๊ฒƒ์ด๋‹ค.

               for (i=value; i<outH+value; i++) {
                    for (k=value; k<outW+value; k++) {
                        var sum =0;
                        for (n=0; n<2*value+1; n++) {
                            for (m=0; m<2*value+1; m++) {
                                sum += tmpInImage[i+value-n][k+value-m];

5. ์ž„์‹œ ์ž…๋ ฅ ๋ฐฐ์—ด์—์„œ ๋‹ค์‹œ ๋ถˆํ•„์š”ํ•œ ๋ถ€๋ถ„ (value๋งŒํผ ๋Š˜๋ฆฐ ๋ถ€๋ถ„)์„ ์ž˜๋ผ๋‚ด์–ด outImage์— ๋„ฃ์œผ๋ฉด ๋œ๋‹ค.

outImage[i-value][k-value] = (sum) / ((2*value+1)*(2*value+1));

 

๊ฒฐ๊ณผ ํ™•์ธ

value=3์ธ ๊ฒฐ๊ณผ
value=10์ธ ๊ฒฐ๊ณผ

728x90

"); wcs_do();