상기 목적을 달성하기 위한 본 발명에 따른 의사윤곽 제거장치는, 입력영상에서 화소값이 유사한 평탄영역에 형성되는 윤곽인 의사윤곽 영역을 검출하는 의사윤곽영역 검출부, 입력영상에서 에지영역 및 에지영역 보다 작은 계조변화를 갖는 디테일 영역을 검출하는 에지 및 디테일영역 검출부, 검출된 의사윤곽영역 중 에지 영역 및 디테일영역을 제거하여 의사윤곽을 갖는 평탄영역을 검출하는 검출부, 및검출된 의사윤곽을 갖는 평탄영역의 화소값들을 셔플링(shuffling)하여 의사윤곽을 갖는 평탄영역을 평활화하는 평활화부를 포함한다.
바람직하게는 의사윤곽영역 검출부는, 입력영상의 소정영역 내의 통계적 특성을 기초로 소정영역이 일정한 화소값을 갖는 평탄영역인지 여부를 검출한다. 그리고, 의사윤곽영역 검출부는, 소정영역 내의 엔트로피를 기초로 엔트로피가 문턱값 이하인 영역을 의사윤곽 영역으로 검출한다.
또는 의사윤곽영역 검출부는, 입력영상의 화소값과, 입력영상이 디스플레이되는 장치에 설정된 비트수를 입력영상의 비트수로 낮춘 값의 비교결과를 기초로 의사윤곽영역을 검출한다.
바람직하게는 에지 및 디테일영역 검출부는, 입력영상의 소정영역 내의 화소값들의 표준편차값, 및 고역 필터링값 중 적어도 어느 하나를 이용하여 에지영역을 검출한다.
또한, 바람직하게는 에지 및 디테일영역 검출부는, 입력영상의 소정영역 내의 화소값들의 변화량, 및 고역 필터링값을 중 적어도 어느 하나를 기초로 디테일 영역을 검출한다.
바람직하게는 평활화부는, 입력영상을 지연시키는 지연부, 및 입력영상 및 지연된 입력영상을 블록단위로 저장하며, 검출된 의사윤곽을 갖는 평탄영역의 블록내 제1 화소값을 블록내 제2 화소값으로 변경하는 랜덤 셔플링부를 포함한다.
그리고, 평활화부는, 제2 화소값의 위치를 결정하는 랜덤수 생성부를 더 포 함한다.
또한, 바람직하게는 평활화부는, 랜덤 셔플링부의 출력값을 저역 필터링하는 저역통과필터를 더 포함한다.
한편, 본 발명의 의사윤곽 제거방법은, 입력영상에서 화소값이 유사한 평탄영역에 형성되는 윤곽인 의사윤곽 영역을 검출하는 단계, 입력영상에서 에지영역 및 에지영역 보다 작은 계조변화를 갖는 디테일 영역을 검출하는 에지 및 디테일영역을 검출하는 단계, 검출된 의사윤곽영역 중 에지영역 및 디테일영역을 제거하여 의사윤곽을 갖는 평탄영역을 검출하는 단계, 및 검출된 의사윤곽을 갖는 평탄영역의 화소값들을 셔플링(shuffling)하여 의사윤곽을 갖는 평탄영역을 평활화하는 단계를 포함한다.
바람직하게는 의사윤곽 영역을 검출하는 단계는, 입력영상의 소정영역 내의 통계적 특성을 기초로 소정영역이 일정한 화소값을 갖는 평탄영역인지 여부를 검출한다.
의사윤곽 영역을 검출하는 단계는, 소정영역 내의 엔트로피를 기초로 상기 엔트로피가 문턱값 이하인 영역을 의사윤곽 영역으로 검출한다.
또는 의사윤곽 영역을 검출하는 단계는, 입력영상의 화소값과, 입력영상이 디스플레이되는 장치에 설정된 비트수를 입력영상의 비트수로 낮춘 값의 비교결과를 기초로 의사윤곽영역을 검출한다.
바람직하게는. 에지 및 디테일영역을 검출하는 단계는, 입력영상의 소정영역 내의 화소값들의 표준편차값, 및 고역 필터링값 중 어느 하나를 이용하여 에지영역 을 검출한다.
또한 바람직하게는, 에지 및 디테일영역을 검출하는 단계는, 입력영상의 소정영역 내의 화소값들의 변화량, 및 고역 필터링값을 중 어느 하나를 기초로 디테일 영역을 검출한다.
바람직하게는 평활화하는 단계는, 입력영상을 지연시키는 단계, 및 입력영상 및 지연된 입력영상을 블록단위로 저장하며, 검출된 의사윤곽을 갖는 평탄영역의 블록내 제1 화소값을 블록내 제2 화소값으로 변경하는 단계를 포함한다.
그리고, 평활화하는 단계는, 제2 화소값의 위치를 결정하는 랜덤수를 생성하는 단계를 더 포함한다.
또한, 평활화하는 단계는, 화소값이 변경된 블록을 저역 필터링하는 단계를 더 포함한다.
이하에서는 도면을 참조하여 본 발명을 보다 상세하게 설명한다.
도 2는 본 발명의 일실시예에 따른 의사윤곽 제거장치의 블록도이다.
도 2를 참조하면, 본 발명의 의사윤곽 제거장치는, 의사윤곽영역 검출부(100), 에지 및 디테일영역 검출부(200), 검출부(300), 및 평활화부(400)를 포함한다.
의사윤곽영역 검출부(100)는 입력영상에서 비트수(bit-depth)가 손실되거나 손실될 수 있는 영역을 검출함으로써 의사윤곽 영역을 검출한다. 의사윤곽영역 여부를 판단하기 위한 현재 화소를 중심으로 입력영상 중 소정영역 내에 위치하는 화소들의 통계적 특성을 이용하여 의사윤곽 영역을 검출한다.
구체적으로, 의사윤곽영역 검출부(100)는 소정영역 내의 화소값들의 히스토그램을 분포를 계산한 후, 소정영역 내에 특정값이 나타날 확률을 기초로 계산되는 엔트로피값을 이용하여 의사윤곽영역을 검출한다. 엔트로피값이 문턱값 이하인 경우, 소정영역을 주변영역의 화소값과 유사한 평탄영역이며 계조변화가 거의 일어나지 않는 의사윤곽 영역으로 검출할 수 있다.
또한, 입력영상에 대한 양자화 예상치와 실제 입력영상의 화소값을 기초로 의사윤곽 영역을 검출할 수도 있다. 양자화 예상치와 실제 입력영상의 화소값의 차에 대한 에너지가 문턱값 보다 작을 경우 입력영상을 의사윤곽 영역으로 검출할 수 있다.
에지 및 디테일영역 검출부(200)는, 입력영상에서 큰 계조변화를 갖는 에지영역과 에지영역 보다 작은 계조변화를 갖는 디테일영역을 검출한다. 에지 및 디테일영역 검출부(200)는, 입력영상의 소정영역 내의 화소값들의 표준편차 및 고역통과필터의 필터링값 중 적어도 어느 하나를 이용하여 에지를 검출할 수 있다. 소정영역 내의 화소값들의 표준편차가 문턱값 이상인 경우, 소정영역의 중심 화소을 에지영역으로 검출할 수 있다. 또는 입력영상의 소정영역을 고역통과필터를 이용하여 필터링한 후, 최대 필터링값을 갖는 화소를 에지영역으로 검출할 수 있다. 이때, 고역통과필터는 캐니 에지 필터(canny edge filter), 소벨 에지 필터(sobel edge filter) 등이 될 수 있다.
그리고, 에지 및 디테일영역 검출부(200)는, 고역통과필터 및 입력영상의 소정영역 내의 화소값들의 변화량 중 적어도 어느 하나를 이용하여 디테일영역을 검 출할 수 있다. 고역통과필터를 통과한 입력영상의 소정영역의 에너지가 합이 문턱값 이상인 경우, 디테일영역으로 검출할 수 있다. 또는 입력영상의 소정영역 내 신호 또는 이 신호의 고역통과 필터링한 값이 양의 값에서 음의 값으로 변화하는 량이나, 음의 값에서 양의 값으로 변화하는 량을 측정함으로써 디테일영역을 검출할 수 있다.
검출부(300)는 의사윤곽영역 검출부(100)와, 에지 및 디테일영역 검출부(200)의 검출결과를 이용하여 의사윤곽을 갖는 평탄영역을 검출한다. 의사윤곽영역 검출부(100)에서 검출된 의사윤곽을 갖는 영역에서 에지 및 디테일영역 검출부(200)에서 검출된 에지 및 디테일영역을 제외함으로서, 의사윤곽을 갖는 평탄영역을 검출할 수 있다.
평활화부(400)는, 의사윤곽을 갖는 평탄영역의 화소값들을 셔플링(shuffling)하여 의사윤곽을 제거한다. 의사윤곽으로 검출된 화소값을 임의의 주소값을 갖는 화소값으로 대체하거나 의사윤곽 영역 내의 임의의 주소값을 갖는 두 화소값을 서로 바꿈으로써, 의사윤곽을 갖는 평탄영역의 화소값들을 셔플링한다.
도 3은 도 2의 평활화부(400)의 일실시예를 설명하기 위한 도면이다. 도 4는 도 3의 평활부의 랜덤 셔플링부(430)의 동작을 상세하게 설명하기 위한 도면이다. 여기서, R은 셔플링되는 입력영상 중 셔플 메모리(433)에 저장된 블록을 나타낸다.
도 3 및 도 4를 참조하면, 평활화부(400)는 지연기(410), 랜덤수 생성부(420), 및 랜덤 셔플링부(430)를 포함한다. 지연기(410)는 제1 지연기(411), 제2 지연기(412), 및 제3 지연기(413)를 포함하며, 입력영상을 지연시켜 출력한다. 랜 덤수 생성부(420)는 랜덤 셔플링부(430)의 포함된 셔플 메모리(433)의 주소값 범위내에 있는 임의의 정수를 생성한다.
랜덤 셔플링부(430)는 셔플 메모리(433) 및 셔플링부(431)를 포함하며, 의사윤곽을 갖는 영역의 화소값을 셔플링하여 의사윤곽을 제거한다. 셔플 메모리(433)는 입력영상과 제1, 제2, 제3 지연기(411, 412, 413)에서 지연된 입력영상을 입력받아 블록단위로 저장한다.
그리고, 셔플링부(431)는 랜덤수 생성부(430)에서 생성된 임의의 셔플 메모리(433)의 주소값을 기초로 의사윤곽을 갖는 평탄영역 내의 화소값을 셔플링한다. 셔플링부(430)는 랜덤수 생성부(430)에서 생성된 임의의 셔플 메모리(433)의 주소값을 입력받아 주소값에 해당하는 화소값을 읽은 후, 기설정된 화소값을 입력받은 주소값에 해당하는 화소값과 바꿈으로써 블록(R)내 화소값들을 셔플링할 수 있다. 이때, 기설정된 화소값은 셔플링되는 영역, 즉 저장된 입력영상의 블록(R)의 중심 화소가 될 수 있다.
또는, 셔플링부(430)는 랜덤수 생성부(430)로부터 두개의 임의의 셔플 메모리(433)의 주소가 입력될 경우, 입력된 주소에 해당하는 화소값을 서로 바꿈으로써 블록내 화소값들을 셔플링하여 의사윤곽을 제거할 수 있다. 또한, 셔플링부(430)의 셔플링을 1회 이상 실시함으로써 평활화를 극대화할 수 있다.
도 5a 및 도 5b는 도 2의 평활화부(400)의 다른 실시예를 설명하기 위한 도면이다. 도 4의 평활화부(400)와 달리 저역통과필터(440), 혼합부(450)를 포함한다. 도 5a 및 도 5a에 도시한 평활화부(400)의 랜덤 셔플링부(430)의 동작은 도 3 및 도 4를 참조하여 상술한 바와 동일하다.
도 5a를 참조하면, 저역통과필터(440)는 의사윤곽을 갖는 평탄영역을 필터링하여, 필터링되는 블록내 화소값들이 유사한 화소값을 갖도록 의사윤곽을 제거한다. 그리고, 혼합부(450)는 랜덤 셔플링부(430)와 저역통과필터(440)의 출력값에 각각 가중치를 설정한 후, 각각의 출력값을 혼합하여 의사윤곽이 제거된 평탄영역의 영상을 출력한다.
도 5b를 참조하면, 평활화부(400)가 도 5a와 같이 저역통과필터(440)의 출력값과 랜덤 셔플링부(430)의 출력값을 혼합하여 영상을 출력하는 것이 아니라, 블록단위로 셔플링된 입력영상을 다시 저역 필터링하여 의사윤곽을 제거한다.
도 6은 본 발명의 일실시예에 따른 의사윤곽 제거방법을 설명하기 위한 흐름도이다.
도 6을 참조하면, 먼저 입력영상 중에서 의사윤곽 영역을 검출한다(S910). 입력영상에서 비트수(bit-depth)가 손실되거나 손실될 수 있는 영역을 검출함으로써 의사윤곽 영역을 검출한다. 이때, 의사윤곽영역 여부 검출은, 현재 화소를 중심으로 소정영역 내부에 위치하는 화소들의 통계적 특성을 이용하여 의사윤곽 영역을 검출할 수 있다.
입력영상 중 소정영역 내의 화소값들의 히스토그램을 분포를 계산한 후, 소정영역 내에 특정값이 나타날 확률을 기초로 계산되는 엔트로피값을 이용하여 의사윤곽영역을 검출한다. 엔트로피값 계산은 다음의 수학식을 이용하여 계산할 수 있다.
여기서, ε는 소정영역 내의 엔트로피값, y는 소정영역 내의 임의의 화소, 및 Py는 소정영역에서 특정 화소값이 나타날 확률을 나타낸다.
수학식1에 따라 계산된 엔트로피값이 문턱값 이하인 경우, 소정영역을 주변영역의 화소값과 유사한 평탄영역이며 계조변화가 거의 일어나지 않는 의사윤곽 영역으로 판단할 수 있다.
또한, 입력영상에 대한 비트수를 낮춘 양자화 예상치와 실제 입력영상의 화소값을 기초로 의사윤곽 영역을 검출할 수도 있다. 양자화 예상치와 실제 입력영상의 화소값의 차에 대한 에너지가 문턱값 보다 작을 경우, 입력영상을 의사윤곽 영역으로 검출할 수 있다.
이어, 입력영상에서 에지 및 디테일영역을 검출한다(S920). 입력영상에서 큰 계조변화를 갖는 에지영역과, 에지영역 보다 작은 계조변화를 갖는 디테일영역을 검출한다. 의사윤곽을 갖는 평탄영역을 정확하게 검출하기 위해, 입력영상에서 평탄영역이 아닌 에지 및 디테일영역을 검출한다.
에지영역의 검출은, 입력영상의 소정영역 내의 화소값들의 표준편차 및 고역통과필터의 필터링값 중 적어도 어느 하나를 이용하여 에지를 검출할 수 있다. 즉,소정영역 내의 화소값들의 표준편차가 문턱값 이상인 경우, 소정영역의 중심 화소를 에지영역으로 판단할 수 있다.
또는 입력영상의 소정영역을 고역통과필터를 이용하여 필터링한 후, 최대 필터링값을 갖는 화소를 에지영역으로 검출할 수 있다. 이때, 고역통과필터는 캐니 에지 필터(canny edge filter), 소벨 에지 필터(sobel edge filter) 등이 될 수 있다. 따라서, 문턱값 이상의 표준편차를 갖는 화소 또는 최대 필터링값을 갖는 화소를 검출하여 에지영역을 검출하거나, 표준편차와 최대 필터링값을 조합하여 에지영역을 검출할 수 있다.
그리고, 디테일영역의 검출은, 고역통과필터 및 입력영상의 소정영역 내의 화소값들의 변화량 중 적어도 어느 하나를 이용하여 디테일영역을 검출할 수 있다. 고역필터를 통과한 입력영상의 소정영역의 에너지가 합이 문턱값 이상인 경우, 입력영상 중 디테일영역으로 검출할 수 있다. 디테일영역은 에지영역과 달리 고역통과필터링값이 최대값을 갖는 영역이 존재하지 않더라도 필터링된 소정영역의 에너지의 합이 문턱값 이상일 경우 평탄영역이 아닌 디테일영역으로 판단할 수 있다.
또는 입력영상의 소정영역 내 신호 또는 고역 필터링한 값이 양의 값에서 음의 값으로 변화하는 량이나, 음의 값에서 양의 값으로 변화하는 량, 또는 양의 값에서 음의 값으로 변화하거나 음의 값에서 양의 값으로 변화한 회수를 측정함으로써, 디테일영역을 검출할 수 있다. 소정영역 내 신호가 변화하는 피크점을 디테일 영역으로 판단할 수 있다.
이어, 의사윤곽이 있는 평탄영역을 검출한다(S930). S910 단계에서 검출된 의사윤곽 영역에서 S920 단계에서 검출된 에지 및 디테일영역을 제거함으로써 의사윤곽을 갖는 평탄영역을 검출할 수 있다.
이어, 의사윤곽이 있는 평탄영역에서 의사윤곽을 제거하기 위해 평활화를 수행한다(S940). 도 7은 의사윤곽이 있는 평탄영역의 평활화 과정을 상세하게 설명하기 위한 흐름도이다.
도 7을 참조하면, 입력영상을 지연시킨다(S941). 이때, 다수의 지연기들을 이용하여 입력영상의 라인별로 지연시킬 수 있다.
이어, 입력영상들을 블록 단위로 저장한다(S943). 의사윤곽을 갖는 평탄영역에서 블록단위로 의사윤곽을 제거하기 위해, 입력영상과 지연된 입력영상들을 블록 단위로 저장한다.
이어, 블록 내 주소값에 해당하는 임의의 정수를 생성한다(S945). 랜덤 함수 등을 이용하여 의사윤곽을 제거하고자 하는 블록내 포함된 화소가 저장된 주소에 해당하는 임의의 정수를 생성한다. 이때, 생성되는 임의의 정수는 적어도 하나 이상이다.
이어, 블록 내 화소값을 변경하는 셔플링을 수행함으로써, 입력영상의 평탄영역에 형성된 의사윤곽을 제거한다(S947). 생성된 임의의 주소값을 기초로 의사윤곽을 갖는 평탄영역 내의 화소값을 셔플링한다. 생성된 임의의 정수가 하나인 경우, 블록내 임의의 주소값을 입력받아 주소값에 해당하는 화소값을 읽은 후, 기설정된 화소값을 입력받은 주소값에 해당하는 화소값과 바꿈으로써 블록내 화소값들을 셔플링할 수 있다. 이때, 기설정된 화소값은 셔플링되는 영역, 즉 저장된 입력영상의 블록의 중심 화소가 될 수 있다.
또는, 두 개의 임의의 정수가 생성될 경우, 입력된 주소에 해당하는 화소값 을 서로 바꿈으로써 블록내 화소값들을 셔플링하여 의사윤곽을 제거할 수 있다. 또한, 셔플링을 1회 이상 실시함으로써 평활화를 극대화할 수 있다.
여기서, 의사윤곽을 갖는 평탄영역에서 블록내 화소값을 셔플링함으로써 의사윤곽을 제거할 수 있지만, 저역 필터링을 함께 이용할 수 있다. 블록내 화소값들을 저역 필터링한 후 필터링한 결과와, 셔플링한 결과에 각각 가중치를 부여하여 의사윤곽을 제거할 수 있다. 또는, 블록내 화소값을 셔플링한 후, 셔플링한 결과를 저역 필터링하여 의사윤곽을 제거할 수도 있다.