๐ ๋ฌธ์
sample.jpg ํ์ผ์ ๋ํด์ ์ด๋ฏธ์ง์ ํ๊ท ๋ฐ๊ธฐ๋ฅผ ๊ธฐ์ค์ผ๋ก ํ์ฌ ๋ช ์๋น๋ฅผ ์กฐ์ ํ ๊ฒฐ๊ณผ๋ฅผ contrast.jpg๋ก ์ ์ฅํ์ธ์.
* ๋ช ์๋น ์กฐ์ ์ ์๋ณธ์ pixel ๊ฐ์ ์ผ์ ํ ๊ฐ์ ๊ณฑํ๋ ํํ๋ก ํ๋, ๊ณ์๋ 2.0์ ์ฌ์ฉํด์ฃผ์ธ์.
* ๊ฒฐ๊ณผ ์ ์ฅ ์ saturation ์ฐ์ฐ์ ์ ์ฉํด์ฃผ์ธ์.
import cv2 as cv
def contrast():
img2 = cv.imread('sample.jpg', cv.IMREAD_GRAYSCALE) # ์ด๋ฏธ์ง ํ์ผ ์ด๊ธฐ
if img2 is None:
print('Image load failed!')
return
alpha = 1.0 # ๊ธฐ์ธ๊ธฐ๊ฐ 2์ด๋ ค๋ฉด alpha๊ฐ์ 1.0์ด์ด์ผ ํ๋ค.
# convertScaleAbs๋ฅผ ์ด์ฉํด ํ๊ท ๋ฐ๊ธฐ๋ฅผ ๊ธฐ์ค์ผ๋ก ๊ธฐ์ธ๊ธฐ(๊ณ์)๋ 2๋ก ํ์ฌ ๋ช
์๋น๋ฅผ ์กฐ์ ํ๋ค.
img2 = cv.convertScaleAbs(img2, alpha = 1+alpha, beta = -img2.mean()*alpha)
# saturate - ํฌํ์ฐ์ฐ์ ํ์ฌ 0๋ณด๋ค ์์ผ๋ฉด 0์ ์๋ ดํ๊ฒ, 255๋ณด๋ค ํฌ๋ฉด 255์ ์๋ ดํ๊ฒ, ๊ทธ ์ธ์ ์๋ณธ๊ฐ
img2[img2 < 0] = 0
img2[img2 > 255] = 255
# contrast.jpg๋ก ์ ์ฅ
cv.imwrite('contrast.jpg', img2)
cv.imshow('image', img2)
cv.waitKey()
contrast()