KR20020027183A - 화상처리장치, 화상처리방법, 인쇄제어장치 및 기록매체 - Google Patents

화상처리장치, 화상처리방법, 인쇄제어장치 및 기록매체 Download PDF

Info

Publication number
KR20020027183A
KR20020027183A KR1020010060081A KR20010060081A KR20020027183A KR 20020027183 A KR20020027183 A KR 20020027183A KR 1020010060081 A KR1020010060081 A KR 1020010060081A KR 20010060081 A KR20010060081 A KR 20010060081A KR 20020027183 A KR20020027183 A KR 20020027183A
Authority
KR
South Korea
Prior art keywords
pixel
error
gradation
dot formation
pixels
Prior art date
Application number
KR1020010060081A
Other languages
English (en)
Other versions
KR100554002B1 (ko
Inventor
카쿠타니토시아키
Original Assignee
구사마 사부로
세이코 엡슨 가부시키가이샤
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 구사마 사부로, 세이코 엡슨 가부시키가이샤 filed Critical 구사마 사부로
Publication of KR20020027183A publication Critical patent/KR20020027183A/ko
Application granted granted Critical
Publication of KR100554002B1 publication Critical patent/KR100554002B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/12Digital output to print unit, e.g. line printer, chain printer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N1/00Scanning, transmission or reproduction of documents or the like, e.g. facsimile transmission; Details thereof
    • H04N1/40Picture signal circuits
    • H04N1/405Halftoning, i.e. converting the picture signal of a continuous-tone original into a corresponding signal showing only two levels
    • H04N1/4051Halftoning, i.e. converting the picture signal of a continuous-tone original into a corresponding signal showing only two levels producing a dispersed dots halftone pattern, the dots having substantially the same size
    • H04N1/4052Halftoning, i.e. converting the picture signal of a continuous-tone original into a corresponding signal showing only two levels producing a dispersed dots halftone pattern, the dots having substantially the same size by error diffusion, i.e. transferring the binarising error to neighbouring dot decisions

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Facsimile Image Signal Circuits (AREA)
  • Image Processing (AREA)
  • Color Image Communication Systems (AREA)
  • Color, Gradation (AREA)

Abstract

화질의 악화를 초래하는 일없이, 화상 데이터를 도트 형성 유무에 따라 표현된 인쇄 데이터로 신속하게 변환한다.
도트 형성 유무를 판단할 때마다 그 판단 화소에서 발생하는 계조(階調) 오차를 일단, 중간 버퍼에 보지(保持)해 둔다. 소정수의 복수 화소분(分)의 계조 오차에 의거 그 복수 화소 주변의 미(未)판단 화소로 확산된 확산 오차를 산출하고, 오차 버퍼로 확산시킨다. 오차 버퍼로의 확산은 계조 오차가 발생할 때마다 중간 버퍼 위에서 오차를 확산하고 나서 오차 버퍼에 기록 입력해도 좋고, 혹은 소정 화소수분의 계조 오차를 중간 버퍼에 보지해 두고, 이들 복수의 계조 오차에서 산출한 계조오차를 오차 버퍼에 기록입력해도 좋다. 이렇게 하면, 계조 오차가 발생할 때마다 오차 버퍼에 확산하는 경우에 비해, 소정 화소수분의 계조 오차가 정리되어 확산되는 정도만큼, 계조 오차를 신속하게 확산하는 것이 가능해진다. 평균 오차 최소법과 수학적으로 동등한 처리를 이러한 방법을 이용하여 실현할 수도 있다.

Description

화상처리장치, 화상처리방법, 인쇄제어장치 및 기록매체{IMAGE PROCESSING DEVICE, IMAGE PROCESSING METHOD, PRINTING CONTROL DEVICE, AND RECORDING MEDIA}
본 발명은 화상을 구성하는 복수 화소의 계조(階調)값으로 표현된 화상 데이터를 변환하는 기술에 관한 것으로, 상세하게는 그 화상 데이터를 각 화소에 관해서의 도트 형성유무에 의한 표현형식의 화상 데이터로 변환하는 기술에 관한 것이다.
인쇄매체나 액정화면이라고 한 표시매체 위에 도트를 형성함으로써, 화상을 표현하는 화상표시장치는 각종화상기기의 출력장치로서 널리 사용되어 있다. 이러한 화상표시장치는 국소적으로 도트를 형성하는지의 여부 중 어느 하나의 상태밖에 표현할 수 없지만, 화상의 계조값에 따라 도트의 형성밀도를 적절하게 제어함으로써, 계조가 연속적으로 변화하는 화상을 표현하는 것이 가능해지고 있다.
이들 화상표시장치에서, 화상의 계조값에 따라 적절한 밀도로 도트가 형성되도록, 각 화소에 관해 도트 형성 유무를 판단하기 위한 대표적인 수법(手法)으로서는 오차확산법이라고 하는 수법 혹은, 이와 수학적으로 등가인 평균 오차 최소법이라고 하는 수법 등이 있다.
오차확산법은, 착안 화소에 도트를 형성한 것, 혹은 도트를 형성하지 않은 것에 따라 생기는 계조표현의 오차를 착안 화소 주변의 미(未)판단 화소로 확산하여 기억해 두고, 미 판단 화소에 관해서의 도트 형성 유무를 판단하는데 있어서는 주변화소로부터 확산되어 온 오차를 해소하도록 도트 형성 유무를 판단하는 수법이다. 또한, 평균 오차 최소법은, 도트 형성 유무의 판단에 의해 생긴 계조 표현의 오차를 주변화소에 확산하는 일없이 착안 화소에 기억해 두고, 그 대신에 미 판단 화소에 관해서의 도트 형성 유무를 판단하는데 있어서는 주변화소에 기억되어 있는 오차를 판독출력하여 이들의 오차를 제거하도록, 착안 화소에 관해서의 도트 형성 유무를 판단하는 수법이다. 이들 중 어느 하나의 수법에서도, 주변화소에서 발생한계조 표현의 오차를 해소하도록 도트 형성 유무를 판단하고 있기 때문에, 화상의 계조값에 따른 적절한 밀도로 도트를 형성할 수 있다. 그 때문에, 이들의 수법을 적용하여 도트 형성 유무를 판단하면, 고화질인 화상을 화상표시장치로 표시하는 것이 가능해진다.
그러나, 오차확산법에는 착안 화소에서 발생한 계조표현의 오차를 주변의 미 판단 화소로 확산하면서 도트 형성 유무를 판단하고 있기 때문에, 이들 화소로 오차를 확산하여 기억시키는 정도만큼, 도트 형성 유무의 판단에 시간이 걸려 버린다고 하는 문제가 있었다. 또한, 평균 오차 최소법에 관해서도 마찬가지로, 주변화소로부터 계조표현의 오차를 판독출력하면서 도트 형성 유무를 판단하고 있기 때문에, 주변화소로부터 오차를 판독출력하는 정도만큼, 도트 형성 유무의 판단에 시간이 걸린다고 하는 문제가 있었다. 어느 쪽의 경우에도, 도트 형성 유무의 판단에 시간이 걸리면, 화상을 신속하게 표시하는 것은 곤란해진다.
본 발명은 종래 기술에서의 상술의 과제를 해결하기 위해 이루어진 것으로, 오차확산법 혹은 평균 오차 최소법을 적용한 경우와 동등한 화질을 유지하면서, 도트 형성 유무의 판단에 요하는 시간을 단축화함으로써, 고화질의 화상을 신속하게 표시 가능한 기술을 제공하는 것을 목적으로 한다.
도 1은 본 실시예의 인쇄시스템의 개략구성도.
도 2는 본 실시예의 화상처리장치로서의 컴퓨터의 구성을 나타내는 설명도.
도 3은 본 실시예의 화상표시장치로서의 프린터의 개략구성도.
도 4는 본 실시예의 화상처리장치에서 행해진 화상 데이터 변환처리의 흐름을 나타내는 흐름도.
도 5는 오차확산법을 이용하여 도트의 형성유무를 판단하는 모양을 개념적으로 나타내는 설명도.
도 6은 화상마다 오차확산계수가 설정되어 있는 모양을 예시하는 설명도.
도 7은 제1 실시예의 계조수(階調數) 변환처리에서 처리시간을 단축화하는 원리를 나타내는 설명도.
도 8은 제1 실시예의 계조수 변환처리의 흐름을 나타내는 흐름도.
도 9는 제1 실시예의 계조수 변환처리에서 1회(回)에 다수의 화소 오차를 확산하는 경우를 나타내는 설명도.
도 10은 제1 실시예의 변형예의 계조수 변환처리의 흐름을 나타내는 흐름도.
도 11은 제2 실시예의 계조수 변환처리에서 처리시간을 단축화하는 원리를 나타내는 설명도.
도 12는 제2 실시예의 계조수 변환처리에서 중간 버퍼와 오차 버퍼에 데이터를 판독 기록하는 처리의 개요를 나타내는 설명도.
도 13은 제2 실시예의 계조수 변환처리의 흐름을 나타내는 흐름도.
도 14는 각 레지스터의 대응하는 화소위치가 착안 화소에 대해 일정하게 한 경우에, 각 레지스터와 착안 화소 주변의 화소가 대응하고 있는 모양을 예시하는 설명도.
도 15는 제2 실시예의 변형예의 계조수 변환처리에서 처리시간을 단축화하는 원리를 나타내는 설명도.
도 16은 제3 실시예의 계조수 변환처리의 흐름을 나타내는 흐름도.
도 17은 제3 실시예의 계조수 변환처리에서 확산범위가 넓은 매트릭스를 사용한 경우와 확산범위가 좁은 매트릭스를 사용한 경우로, 계조 오차가 확산되는 범위를 비교하여 나타내는 설명도.
도 18은 제4 실시예의 변형예의 계조수 변환처리에서 처리시간을 단축화하는 원리를 나타내는 설명도.
도 19는 제4 실시예의 변형예의 계조수 변환처리에서, 중량계수가 화소마다 설정되어 있는 모양을 예시하는 설명도.
도 20은 제4 실시예의 계조수 변환처리의 흐름을 나타내는 흐름도.
<도면 주요 부분에 대한 부호의 설명>
10,100: 컴퓨터 12: 프린터 드라이버
20,200: 컬러 프린터 102: CPU
104: ROM 106: RAM
108: 주변기기 인터페이스(P-I/F) 109: 디스크 컨트롤러(DDC)
110: 네트워크 인터페이스 카드(NIC) 112: 비디오 인터페이스(V-I/F)
114: CRT 116: 버스
118: 하드 디스크 120: 디지털 카메라
122: 컬러 스캐너 124: 플로피 디스크
126: 콤팩트 디스크 230: 캐리지 모터
235: 용지 전송 모터 236:플래턴(platen)
240: 캐리지 241: 인자 헤드
242, 243: 잉크 카트리지 244: 잉크 토출용 헤드
260: 제어회로 261: CPU
262: ROM 263: RAM
300: 통신회선 310: 기억장치
상술한 과제 중 적어도 일부를 해결하기 위해서, 본 발명의 제1의 화상처리장치는 다음 구성을 채용했다. 즉,
각 화소의 계조값을 나타내는 화상 데이터를 수취하고, 그 화소마다 그 계조값에 의거 도트 형성 유무를 판단함으로써, 그 화상 데이터를 도트 형성 유무에 의한 표현형식의 화상 데이터로 변환하는 화상처리장치로서,
상기 도트 형성 유무를 판단할 때마다 그 판단한 화소에서 발생하는 계조 오차를 그 도트 형성 유무의 판단결과에 의거 산출하여 일시적으로 보지(保持)하는 계조 오차보지수단과,
소정수의 복수화소에 관해서의 상기 일시적으로 보지된 계조 오차에 의거하여, 그 소정수의 복수화소의 주변에 있어 도트 형성 유무의 판단이 이루어지지 않은 미 판단 화소로 확산되는 확산 오차를 산출하고, 그 산출한 확산 오차를 그 미 판단 화소에 대응시켜 기억하는 확산 오차 기억수단과,
상기 미 판단 화소에 대응시켜 기억된 상기 확산 오차를 고려하면서, 상기 화상 데이터에서의 그 미 판단 화소의 계조값에 의거하여, 그 미 판단 화소에 관해서의 도트 형성 유무를 판단하는 도트형성 판단수단을
구비하는 것을 요지로 한다.
또한, 상기의 제1의 화상처리장치에 대응하는 본 발명의 제1의 화상처리방법은, 각 화소의 계조값을 나타내는 화상 데이터를 수취하고, 그 화소마다 그 계조값에 의거 도트 형성 유무를 판단함으로써, 그 화상 데이터를 도트 형성 유무에 의한 표현형식의 화상 데이터에 변환하는 화상처리방법으로서,
상기 도트 형성 유무를 판단할 때마다 그 판단한 화소에서 발생하는 계조 오차를 그 도트 형성 유무의 판단결과에 의거 산출하여 일시적으로 보지해 두고,
소정수의 복수화소에 관해서의 상기 일시적으로 보지된 계조 오차에 의거하여, 그 소정수의 복수화소의 주변에 있어 도트 형성 유무의 판단이 이루어지지 않는 미 판단 화소로 확산되는 확산 오차를 산출하고,
상기 산출한 확산 오차를 상기 미 판단 화소에 대응시켜 기억하고,
상기 미 판단 화소에 대응시켜 기억된 상기 확산 오차를 고려하면서, 상기 화상 데이터에서의 그 미 판단 화소의 계조값에 의거하여, 그 미 판단 화소에 관해서의 도트 형성 유무를 판단하는 것을 요지로 한다.
이러한 제1의 화상처리장치 혹은 화상처리방법에서는 도트 형성 유무를 판단함으로써 생긴 상기 계조 오차를 일시적으로 보지해 두고, 소정수의 복수화소에 관해서의 계조 오차에 의거하여, 상기 미 판단 화소로의 확산 오차를 산출하고 나서 기억시킨다. 이렇게하면, 소정수의 복수화소의 계조 오차를 주변의 미 판단 화소로 정리해서 확산하여 기억시킬 수 있기 때문에, 각 화소에서 생긴 계조 오차를 개별로 확산하여 기억시키는 경우에 비해, 신속하게 기억시킬 수 있다. 그 결과, 도트 형성 유무의 판단에 요하는 시간이 단축화되고, 고화질의 화상을 신속하게 표시시키는 것이 가능해진다.
이러한 제1의 화상처리장치에서, 상기 계조 오차 기억수단은 상기 확산 오차 기억수단에 대해 판독 기록하는 것보다도, 상기 계조 오차를 신속하게 판독기록 가능한 기억수단으로 해도 좋다.
상기 소정화소수의 계조 오차는 상기 계조 오차 기억수단에 일단 보지되고 나서 상기 확산 오차 기억수단에 기억되기 때문에, 그 계조 오차 기억수단은, 그확산 오차 기억수단과 같이 빈번하게 판독기록된다. 따라서, 그 계조 오차 기억수단을 그 확산 오차 기억수단에 대해 판독기록하는 것보다도 신속하게 판독기록 가능하게 하면, 그 계조 오차가 발생하고 나서 최종적으로 확산 오차로서 기억되기까지의 시간이 단축화되고, 나아가서는 도트 형성 유무의 판단에 요하는 시간을 단축화할 수 있기 때문에 썩 알맞다.
이러한 제1의 화상처리장치 혹은 변환방법에서는 상기 확산 오차를 각 미 판단 화소에 대응시켜 기억하는데 있어서, 다음과 같이 해도 좋다. 즉, 상기 계조 오차가 산출될 때마다, 미 판단 화소의 각각에 분배되는 분배오차를 산출하여, 그 산출한 분배오차를 각 미 판단 화소마다 축적해 가고, 상기 소정수의 복수화소에 관해서의 상기 분배오차를 모두 축적하면, 각 미 판단 화소마다 축적된 모든 그 분배오차를, 상기 확산 오차로서 상기 미 판단 화소에 대응시켜 축적하는 것으로 해도 좋다.
이렇게 해서 계조 오차를 도모할 때마다, 각 미 판단 화소에 분배오차를 축적해 두면, 상기 소정수의 상기 계조 오차를 산출하고 나서, 상기 확산 오차를 각 미 판단 화소에 대응시켜 기억시키기까지의 처리를 신속하게 행할 수 있다. 소정수의 복수 화소분(分)의 계조 오차를 1회 확산하여 기억시킨 것만으로는 확산해야 할 모든 계조 오차를 기억시킬 수 없는 미 판단 화소에 관해서도, 소정 화소수분의 확산 오차를 축적해감으로써, 모든 계조 오차를 확산하여 기억시킬 수 있다. 따라서, 이러한 방법을 이용하면, 확산 오차를 미 판단 화소로 확산하여 기억시키는 처리를 신속하게 할 수 있기 때문에, 도트 형성 유무의 판단에 요하는 시간을 단축화하는것이 가능해진다.
이러한 제1의 화상처리장치 혹은 변환방법에서는 확산 오차를 각 미 판단 화소에 대응시켜 기억하는데 있어서, 상술한 방법으로 바꾸어 다음과 같이 해도 좋다. 즉, 소정수의 복수화소에 관해서의 계조 오차를 보지해 두고, 보지되어 있는 소정수의 계조 오차에 의거하여 각 미 판단 화소로 확산되는 확산 오차를 산출하여, 그 산출한 모든 확산 오차를 각 미 판단 화소에 대응시켜 축적하는 것으로 해도 좋다.
이렇게 해서 소정수의 복수의 계조 오차를 보지해 두면, 각 미 판단 화소로 확산해야 할 확산 오차를 산출하는 처리가 간편해지고, 나아가서는 그 소정화소수의 계조 오차를 주변의 미 판단 화소로 정리하여 확산하는 처리가 간편해지기 때문에 썩 알맞다. 또한, 그 미 판단 화소수에 비하면 그 소정화소수의 쪽이 적기 때문에, 이러한 방법을 이용하면, 계조 오차를 산출할 때마다 각 미 판단 화소에 분배오차를 축적하는 방법에 비해, 기억 용량을 절약할 수 있어 바람직하다.
상술한 제1의 화상처리장치 혹은 변환방법에서는 확산 오차를 각 미 판단 화소에 대응시켜 기억하는데 있어서, 다음과 같이 해도 좋다. 즉, 상기 계조 오차가 산출될 때마다, 미 판단 화소의 각각에 분배되는 분배오차를 산출하여, 그 산출한 분배오차를 각 미 판단 화소마다 축적해 가고, 상기 소정수의 복수 화소분의 분배오차가 축적된 각 미 판단 화소의 분배오차를, 상기 확산 오차로서 상기 미 판단 화소에 대응시켜 기억하는 것으로 해도 좋다.
이와 같이, 계조 오차를 도모할 때마다 각 미 판단 화소에 분배오차를 축적하고, 소정 화소수분의 분배오차가 축적된 미 판단 화소의 분배오차를 상기 확산 오차로서 기억하는 것으로 하면, 그 소정화소수의 확산 오차를 각 미 판단 화소에 대응시켜 기억시키는 처리를 신속하게 행하는 것이 가능해지기 때문에 바람직하다.
이러한 제1의 화상처리장치 혹은 변환방법에서는 확산 오차를 미 판단 화소에 대응시켜 기억하는데 있어서, 상술한 방법으로 바꿔 다음과 같이 해도 좋다. 즉, 소정수의 복수화소에 관해서의 계조 오차를 보지해 두고, 복수의 그 미 판단 화소 중에 있어 그 소정수의 계조 오차가 모두 확산되는 특정화소로의 확산 오차를 그 보지해 있는 계조 오차로부터 산출하여, 그 특정화소에 대응시켜 기억하는 것으로 해도 좋다.
이렇게 해서 소정화소수의 계조 오차를 보지해 두고, 상기 특정화소로의 확산 오차를 산출하여 상기 확산 오차로서 기억하면, 그 확산 오차를 미 판단 화소로 확산하여 기억시키는 처리가 간편해진다. 그 결과, 그 소정화소수의 계조 오차를 확산하여 기억하는 처리가 신속해지고, 나아가서는 화상을 표시하기 위해서 요하는 시간을 단축화하는 것이 가능해지기 때문에 바람직하다.
상술한 제1의 화상처리장치 혹은 변환방법에서는 확산 오차를 미 판단 화소에 대응시켜 기억하는데 있어서, 다음과 같이 해도 좋다. 즉, 상기 소정수의 복수화소주변의 제1의 소정영역내에 있는 제1의 미 판단 화소의 각각에 관해서는, 그 소정수의 복수화소에 관해서의 상기 계조 오차에 의거 그 제1의 미 판단 화소로의 상기 확산 오차를 산출하여, 그 제1의 미 판단 화소에 대응시켜 기억한다. 또한, 상기 소정수의 복수화소의 주변에 있어 상기 제1의 소정영역내에는 포함되지 않는제2의 미 판단 화소에 관해서는 상기 계조 오차를 산출할 때마다, 그 계조 오차로부터 그 제2의 각 미 판단 화소의 각각으로 확산되는 상기 확산 오차를 산출하여, 그 제2의 미 판단 화소에 대응시켜 기억한다.
이렇게 하면, 상기 제1의 미 판단 화소에 관해서는 소정수의 복수 화소로부터 분배되는 분배오차를 각 미 판단 화소로 정리하여 확산할 수 있기 때문에, 전체로서 도트 형성 유무를 판단하기 위해서 요하는 시간이 단축화되어 바람직하다.
이러한 화상처리장치에서는 계조 오차를 산출할 때마다 확산 오차가 산출되어 확산되는 상기 제2의 미 판단 화소로서, 상기 제1의 소정영역을 포함한 제2의 소정영역내에 있는 미 판단 화소에, 상기 확산 오차를 산출하여 기억하는 것으로 해도 좋다.
소정수의 복수 화소에서 생긴 계조 오차를 넓은 범위로 확산시키고자 한다면, 계조 오차의 확산 범위에는 그만큼 많은 미 확산 화소가 포함되는 것으로 되기 때문에, 소정화소수의 계조 오차를 정리해서 확산하여 기억시키기 위한 처리는 복잡화하는 경향에 있다. 이에 대해, 계조 오차를 확산시키는 범위를 상기 소정수의 복수 화소의 주변의 제1의 소정영역과 그 제1의 소정영역을 포함하는 제2의 소정영역으로 분할하고, 그 제1의 소정영역에 있는 제1의 미 판단 화소에 관해서는 소정수의 복수 화소에 관해서의 계조 오차에 의거하여 각 화소로의 확산 오차를 산출하여 기억하고, 그 제1의 소정영역이외에 있는 제2의 미 판단 화소에 관해서는 계조 오차가 산출될 때마다, 그 계조 오차로부터의 확산 오차를 산출하여, 그 제2의 미 판단 화소의 각각에 대응시켜 기억시킨다. 이렇게 하면, 소정화소수의 계조 오차를정리하여 확산해야 할 미 판단 화소수가 감소하기 때문에 처리를 간소화하는 것이 가능해져서 썩 알맞다. 한편, 제1의 소정영역내에 있는 제1의 미 판단 화소에 대해, 소정수의 복수 화소에 관해서의 계조 오차를 정리해서 확산하여 기억시키는데 있어서는, 상술한 각종 방법을 적당하게 적용할 수 있는 것은 물론이다.
이러한 제1의 화상처리장치 혹은 변환방법에서는 상기 도트 형성 유무의 판단에 관계하는 조건에 따라, 상기 계조 오차를 주변의 화소로 확산시키는 범위를 상기 소정수의 복수 화소주변의 상기 제1의 소정영역과, 그 제1의 소정영역을 포함하는 제2의 소정영역과 바꾸도록 해도 좋다.
화질상의 요청 등에서, 도트 형성 유무의 판단에 관계하는 조건에 따라, 오차를 확산시키는 범위의 광협을 바꾸는 기술이 사용되는 적이 있다. 이와 같은 경우에, 계조 오차를 확산시키는 범위를 소정수의 복수 화소주변의 제1의 소정영역과, 그 제1의 소정영역을 포함하는 제2의 소정영역으로 바꿈과 동시에, 그 제1의 소정영역에는 포함되지 않은 먼곳의 미 판단 화소에 관해서는 계조 오차를 직접 확산시키는 것으로 하면, 소정화소수의 계조 오차를 정리해서 확산하여 기억시키는 처리가 간소화되기 때문에 썩 알맞다.
그 위에, 상기 소정수의 복수 화소의 계조값과, 그 각 화소에 관해서의 도트 형성 유무의 판단결과에 의거하여, 상기 오차를 확산시키는 범위를 상기 제1의 소정영역과 그 제1의 소정영역을 포함하는 제2의 소정영역으로 바꾸는 것으로 해도 좋다.
예컨대, 표현하고자 하는 화상 데이터의 계조값이 작은 영역에서, 우연히 도트가 형성된 경우에는 도트가 형성된 것에 의한 오차를 넓은 범위로 확산시키면, 도트의 분산성을 개선하여 화질을 향상시킬 수 있다. 혹은, 화상 데이터의 계조값이 큰 영역에서, 우연히 도트가 형성되지 않은 경우에, 도트가 형성되지 않은 것에 따른 오차를 넓은 범위로 확산시키면, 마찬가지로 하여 화질을 향상시킬 수 있다. 이와 같은 경우, 상기 제1의 소정영역의 미 판단 화소에는 상기 소정수의 복수 화소로부터의 확산 오차를 정리하여 확산함과 동시에, 우연히 도트가 형성된 경우 혹은 형성되지 않은 경우에는 그 제1의 소정영역에 포함되지 않은 먼곳의 미 판단 화소에도, 계조 오차를 산출할 때마다 오차를 확산한다. 이렇게 하면, 먼곳의 미 판단 화소로 오차를 확산하는 것은 드물기 때문에, 실질적으로는 처리속도를 거의 저하시키는 일없이, 도트 형성 유무를 판단하는 처리를 간소화할 수 있기 때문에 썩 알맞다.
상술한 제1의 화상처리장치 혹은 변환방법에서는, 상기 소정수의 복수 화소를 서로 인접하는 화소로 하여 그 소정수의 복수 화소에 관해서의 각 계조 오차에 의거 상기 확산 오차를 산출하여, 상기 미 판단 화소에 대응시켜 기억하는 것으로 해도 좋다.
계조 오차가 발생한 복수 화소가 서로 인접하고 있는 경우, 서로 인접하지 않고 있는 경우에 비해 각 화소에서 발생한 계조 오차를 확산시키는 범위의 서로 중복하는 부분이 넓어진다. 따라서, 각 미 판단 화소로의 확산 오차를 소정화소수분의 계조 오차로부터 산출하여 각 화소로 확산한 경우에, 그 소정수의 복수 화소가 서로 인접해 있으면, 복수의 계조 오차로부터의 확산 오차가 정리하여 확산되는미 판단 화소가 많아지기 때문에, 그만큼, 계조 오차를 신속하게 확산하여 기억시키는 것이 가능해져서 썩 알맞다. 또, 이러한 경우에서도 소정화소수분의 계조 오차로부터 산출한 확산 오차를 미 판단 화소로 확산하여 기억시키는데 있어서는 상술한 각종 방법을 썩 알맞게 적용 가능한 것은 말할 필요도 없다.
소정수의 인접한 복수 화소의 계조 오차에 의거하여 확산 오차를 산출하는 상기의 제1의 화상처리장치 혹은 변환방법에서는 미 판단 화소의 도트 형성 유무를 판단하는데 있어서, 이미 그 미 판단 화소에 대응시켜 기억되어 있는 확산 오차에 더하여 그 미 판단 화소에 인접하는 화소로부터의 상기 확산 오차를 고려하여, 도트 형성 유무를 판단하는 것으로 해도 좋다.
이렇게 하면, 인접하는 화소의 도트 형성 유무가 판단된 미 판단 화소에 관해서의 도트 형성 유무를 판단하는 경우 인접하는 화소로부터 확산되어 오는 확산 오차에 관해서는 그 미 판단 화소로 확산시켜 기억시키는 처리를 행하는 일없이 도트 형성 유무를 판단할 수 있기 때문에, 판단을 신속하게 행하는 것이 가능해져서 썩 알맞다.
또한, 상술한 과제 중 적어도 일부를 해결하기 위해서, 본 발명의 제2의 화상처리장치는, 다음 구성을 채용했다. 즉,
각 화소의 계조값을 나타내는 화상 데이터를 수취하고, 그 화소마다 그 계조값에 의거 도트 형성 유무를 판단함으로써, 그 화상 데이터를 도트 형성 유무에 의한 표현형식의 화상 데이터로 변환하는 화상처리장치로서,
상기 도트 형성 유무를 판단할 때마다 그 판단한 화소에서 발생하는 계조 오차를 그 도트 형성 유무의 판단결과에 의거 산출하고, 그 판단화소에 대응시켜 기억하는 계조 오차 기억수단과,
상기 도트 형성 유무를 판단하고자 하는 착안 화소의 주변에 있어 그 도트 형성 유무를 판단 필(畢)의 기(旣)판단 화소마다 대응시켜 기억되어 있는 상기 계조 오차를 그 기판단화소마다 보지하는 계조 오차 보지수단과,
상기 기 판단 화소마다 보지되어 있는 계조 오차를 고려하면서, 상기 화상 데이터에서의 상기 착안 화소의 계조값에 의거하여, 도트 형성 유무를 판단하는 도트형성판단수단과,
상기 착안 화소의 다음에 도트 형성 유무를 판단하는 다음 착안 화소에 관해서의 상기 기 판단 화소를 검출하여, 그 검출한 기 판단 화소 중에서 상기 계조 오차가 일시적으로 보지되어 있지 않은 기 판단 화소의 계조 오차를 상기 계조 오차 기억수단으로부터 판독출력하고, 그 판독출력된 계조 오차로 그 다음 착안 화소에 관해서의 판단에 사용하지 않는 그 계조 오차를 갱신하여, 그 다음 착안 화소의 판단에 이바지하게 하는 계조 오차 갱신수단을
구비하는 것을 요지로 한다.
상기의 제2의 화상처리장치에 대응하는 본 발명의 제2의 화상처리방법은
각 화소의 계조값을 나타내는 화상 데이터를 수취하고, 그 화소마다 그 계조값에 의거 도트 형성 유무를 판단함으로써, 그 화소데이터를 도트 형성 유무에 의한 표현형식의 화상 데이터로 변환하는 화상처리방법으로서,
상기 도트 형성 유무를 판단할 때마다 그 판단한 화소에서 발생하는 계조 오차를 그 도트 형성 유무의 판단결과에 의거 산출하여, 그 판단화소에 대응시켜 기억하고,
상기 도트 형성 유무를 판단하고자 하는 착안 화소의 주변에 있어 그 도트 형성 유무를 판단 필의 기 판단 화소마다 대응시켜 기억되어 있는 상기 계조 오차를 그 기 판단 화소마다 보지해 두고,
상기 기 판단 화소마다 보지되어 있는 계조 오차를 고려하면서, 상기 화상 데이터에서의 상기 착안 화소의 계조값에 의거하여 도트 형성 유무를 판단하고,
상기 착안 화소의 다음에 도트 형성 유무를 판단하는 다음 착안 화소에 관해서의 상기 기 판단 화소를 검출하고,
상기 검출한 기 판단 화소 중에서 상기 계조 오차가 보지되어 있지 않는 기 판단 화소의 계조 오차를 판독출력하여, 그 판독출력된 계조 오차로 그 다음 착안 화소에 관해서의 판단에 사용하지 않는 그 계조 오차를 갱신한 후, 그 다음 착안 화소의 판단에 이바지하게 하는 것을 요지로 한다.
이러한 제2의 화상처리장치 및 화상처리방법에서는 착안 화소의 도트형성판단에 있어서, 상기 기 판단 화소에 대응시켜 기억되어 있는 계조 오차를 보지해 두고, 그 보지되어 있는 계조 오차를 고려하여 도트 형성 유무를 판단한다. 다음 착안 화소에 관해서의 도트 형성 유무를 판단할 때에는 우선 처음에, 그 다음 착안 화소에 관해서의 기 판단 화소를 검출하고, 이어서 그 착안 화소에 관해서의 기 판단 화소와의 차이를 조사한다. 그리고, 그 착안 화소의 도트형성판단에 사용하지 않았던 기 판단 화소에 기억되어 있는 계조 오차를 판독출력하고, 판독출력된 계조오차로 다음 착안 화소의 판단에 사용하지 않는 계조 오차를 갱신한 후, 그 다음 착안 화소의 판단에 이바지하게 한다.
이렇게 하면, 다음 착안 화소의 도트형성판단에 있어서, 그 다음 착안 화소에 관해서의 판단에는 사용하지만, 착안 화소에 관해서의 도트형성판단에는 사용하지않은 계조 오차만을 판독 하면 좋다. 그 결과, 도트 형성 판단을 위해 판독출력하지 않으면 안되는 계조 오차수를 감소시킬 수 있고, 도트 형성 유무를 판단하기 위해서 요하는 시간을 단축화하는 것이 가능해진다.
이러한 제2의 화상처리장치 혹은 변환방법에서는 상기 착안 화소에서 발생한 계조 오차를 일시 보지해 두고, 그 보지된 계조 오차로 상기 다음착안 화소에 관해서의 판단에 사용하지 않은 상기 계조 오차를 갱신하도록 해도 좋다.
이렇게 하면, 착안 화소에 대응시켜 기억되어 있는 계조 오차를 판독출력하는 일없이, 다음착안 화소의 도트형성판단을 행할 수 있기 때문에, 신속하게 도트 형성 유무를 판단하는 것이 가능해진다.
또한, 인쇄매체 위에 잉크도트를 형성하여 화상을 인쇄하는 인쇄부에 대해, 잉크도트의 형성을 제어하기 위한 인쇄 데이터를 출력하는 것으로, 그 인쇄부를 제어하는 인쇄제어장치에서는 본 발명의 상술한 제1의 화상처리장치 혹은 제2의 화상처리장치를 썩 알맞게 이용할 수 있다. 즉, 상술한 제1의 화상처리장치 혹은 제2의 화상처리장치에서는 각 화소의 계조값을 나타내는 화상 데이터를 수취하고, 그 화상 데이터를 도트 형성 유무에 의한 화상 데이터에 신속하게 변환할 수 있다. 이 때문에, 이러한 제1의 화상처리장치 혹은 제2의 화상처리장치를 상기 인쇄제어장치에 적용하면, 화상 데이터를 인쇄 데이터로 신속하게 변환할 수 있다. 이렇게 해서 얻어진 인쇄 데이터를 상기 인쇄부로 출력하면, 그 인쇄부에서는 고화질인 화상을 신속하게 인쇄하는 것이 가능해지기 때문에 썩 알맞다.
또한, 본 발명은 상술한 제1의 화상처리방법, 혹은 제2의 화상처리방법을 실현하는 프로그램을 컴퓨터에 판독입력시키고, 컴퓨터를 이용하여 실현하는 것도 가능하다. 따라서, 본 발명은 다음과 같은 기록매체로서의 태양도 포함하고 있다. 즉, 상술한 제1의 화상처리방법에 대응하는 기록매체는,
각 화소의 계조값을 나타내는 화상 데이터를 수취하고, 그 화소마다 그 계조값에 의거 도트 형성 유무를 판단함으로써, 그 화상 데이터를 도트 형성 유무에 의한 표현형식의 화상 데이터로 변환하는 방법을 실현하는 프로그램을 컴퓨터로 판독 가능하게 기록한 기록매체로서,
상기 도트 형성 유무를 판단할 때마다 그 판단한 화소에서 발생하는 계조 오차를 그 도트 형성 유무의 판단결과에 의거 산출하여 일시적으로 보지해 두는 기능과,
소정수의 복수 화소에 관해서의 상기 일시적으로 보지된 계조 오차에 의거하여, 그 소정수의 복수 화소의 주변에 있어 도트 형성 유무의 판단이 이루어지지 않는 미 판단 화소로 확산되는 확산 오차를 산출하는 기능과,
상기 산출한 확산 오차를 상기 미 판단 화소에 대응시켜 기억하는 기능과,
상기 미 판단 화소에 대응시켜 기억된 상기 확산 오차를 고려하면서, 상기 화상 데이터에서의 그 미 판단 화소의 계조값에 의거하여, 그 미 판단 화소에 관해서의 도트 형성 유무를 판단하는 기능을
실현하는 프로그램을 기록하고 있는 것을 요지로 한다.
또한, 상술의 제2의 화상처리방법에 대응하는 기록매체는,
각 화소의 계조값을 나타내는 화상 데이터를 수취하고, 그 화소마다 그 계조값에 의거 도트 형성 유무를 판단함으로써, 그 화상 데이터를 도트 형성 유무에 의한 표현형식의 화상 데이터로 변환하는 방법을 실현하는 프로그램을 컴퓨터로 판독 가능하게 기록한 기록매체로서,
상기 도트 형성 유무를 판단할 때마다 그 판단한 화소에서 발생하는 계조 오차를 그 도트 형성 유무의 판단결과에 의거 산출하여, 그 판단화소에 대응시켜 기억하는 기능과,
상기 도트 형성 유무를 판단하고자 하는 착안 화소의 주변에 있어 그 도트 형성 유무를 판단 필의 기 판단 화소마다 대응시켜 기억되어 있는 상기 계조 오차를 그 기 판단 화소마다 보지해 두는 기능과,
상기 기 판단 화소마다 보지되어 있는 계조 오차를 고려하면서, 상기 화상 데이터에 나타내어진 상기 착안 화소의 계조값에 의거하여, 도트 형성 유무를 판단하는 기능과,
상기 착안 화소의 다음에 도트 형성 유무를 판단하는 다음 착안 화소에 관해서의 상기 기 판단 화소를 검출하는 기능과,
상기 검출한 기 판단 화소 중에서 상기 계조 오차가 보지되어 있지 않는 기 판단 화소의 계조 오차를 판독출력하여, 그 판독출력된 계조 오차로 그 다음착안화소에 관해서의 판단에 사용하지 않는 그 계조 오차를 갱신한 후, 그 다음착안 화소의 판단에 이바지하게 하는 기능을
실현하는 프로그램을 기록하고 있는 것을 요지로 한다.
이들 기록매체에 기록되어 있는 프로그램을 컴퓨터에서 판독입력시키고, 그 컴퓨터를 이용하여 상술한 각종기능을 실현하면, 화소마다 계조값을 나타내는 화상 데이터를 도트 형성 유무에 의한 표현형식의 화상 데이터에 신속하게 변환하는 것이 가능해진다.
(실시예)
본 발명의 작용·효과를 보다 명확히 설명하기 위해서, 본 발명의 실시예를 다음과 같은 순서에 따라 이하에 설명한다.
A. 실시예:
B. 제1 실시예:
B-1. 장치구성:
B-2. 화상 데이터 변환처리의 개요:
B-3. 제1 실시예의 계조수 변환처리:
B-4. 변형예:
C. 제2 실시예:
C-1. 제2 실시예에서 계조수 변환처리의 시간을 단축화하는 원리:
C-2. 제2 실시예의 계조수 변환처리:
C-3. 변형예:
D. 제3 실시예:
E. 제4 실시예:
E-1. 제4 실시예에서 계조수 변환처리의 시간을 단축화하는 원리:
E-2. 제4 실시예의 계조수 변환처리:
A. 실시예:
도 1을 참조하면서, 본 발명의 실시예에 관해 설명한다. 도 1은 인쇄 시스템을 예로 들어, 본 발명의 실시예를 설명하기 위한 설명도이다. 본 인쇄 시스템은 화상처리장치로서의 컴퓨터(10)와, 컬러 프린터(20)등으로 구성되어 있다. 컴퓨터(
10)는 디지털 카메라나 컬러 스캐너 등의 화상기기로부터 컬러화상의 계조화상 데이터를 수취하면, 그 화상 데이터를 컬러 프린터(20)에서 인쇄 가능한 각 색 도트 형성 유무에 의해 표현된 인쇄 데이터로 변환한다. 이러한 화상 데이터의 변환은 프린터 드라이버(12)라고 하는 전용(專用)의 프로그램을 이용하여 행해진다. 한편, 컬러 화상의 계조 화상 데이터는 각종 어플리케이션 프로그램을 이용하여 컴퓨터(1
0)로 작성할 수도 있다.
프린터 드라이버(12)는 해상도변환 모듈, 색변환 모듈, 계조수변환 모듈, 인터레이스(interlace) 모듈이라고 한 복수의 모듈로 구성되어 있다. 계조화상 데이터를 도트 형성 유무에 의한 표현형식으로 변환하는 처리는 계조수 변환 모듈에서 행해진다. 다른 각 모듈에서 행해지는 처리에 관해서는 후술한다. 컬러 프린터(20)는 이들 각 모듈에서 변환된 인쇄 데이터에 의거하여, 인쇄매체 위에 각색 잉크도트를 형성함으로써 컬러화상을 인쇄한다.
본 발명의 인쇄 시스템에서의 계조수변환 모듈은 도시하는 바와 같이, 계조 오차 산출부와 오차 버퍼의 사이에 중간 버퍼가 설치된 구성으로 되어 있다. 이 중간 버퍼를 활용하는 것으로, 도트 형성 유무의 판단을 신속하게 행하는 것이 가능해지고 있다.
즉, 일반적으로 계조 데이터를 도트 형성 유무에 의해 표현하고자 하면, 저절로, 각 화소에는 계조표현의 오차가 발생한다. 상술한 오차확산법 혹은 평균 오차 최소법이라고 하는 수법에서는 발생한 계조 오차를 주(主)기억영역의 일부에 준비된 대용량의 오차 버퍼에 축적해 두고, 다른 화소에 관해서의 도트 형성 유무를 판단할 때에는 그 화소에 축적되어 있는 오차를 오차 버퍼로부터 판독출력하여, 판독출력된 오차의 값을 고려하면서 도트 형성 유무를 판단하고 있다. 이것으로부터 분명한 바와 같이, 도트 형성 유무를 판단하기 위해서는 오차 버퍼에 대해 빈번하게 데이터의 판독기록을 행할 필요가 있다. 오차 버퍼에는 대용량의 버퍼가 사용되고, 데이터의 판독기록에 어느 정도의 시간을 요하기 때문에, 빈번하게 판독 기록하면 그 정도만큼 시간이 걸려 버린다.
이에 대해 본 발명의 인쇄 시스템에서의 계조수 변환 모듈에서는 오차 버퍼보다도 소용량의 중간 버퍼를 활용하는 것으로, 나중에 상세히 설명하는 바와 같이, 오차 버퍼에 대해 판독 기록하는 빈도를 감소시키고 있다. 중간 버퍼는 소용량의 영역이 되풀이하여 판독기록되기 때문에, 오차 버퍼보다도 고속으로 판독 기록하는 것이 용이하다. 예컨대, 주 메모리와 CPU의 사이에, 주 메모리보다도 고속으로 판독기록 가능한 캐쉬 메모리(cache memory)를 갖는 컴퓨터 시스템에서는 중간버퍼로부터 데이터를 판독출력하려고 하면, 대개의 경우에 캐쉬로부터 판독출력된다고 기대되고, 특별한 배려를 하지 않아도 자연스럽게 중간 버퍼는 오차 버퍼보다도 고속으로 판독 기록하는 것이 가능하다.
또한, CPU의 레지스터에 여유가 있는 경우는 중간 버퍼중 적어도 일부를 캐쉬 메모리보다도 더욱 고속으로 판독기록이 가능한 레지스터에 할당하는 것이 가능하고, 더욱 고속화를 도모할 수 있다. 중간 버퍼의 일부를 CPU의 레지스터에 할당하기 위해서는 예컨대, C 언어에서는 register 선언을 이용하는 것으로, 처리 소프트웨어의 소스 코드(source code)로 명시적으로 지정하는 것이 가능하다. 그 위에, 최적화 능력이 높은 컴파일러(compiler)의 중에는 남아 있는 레지스터를 사용빈도가 높은 변수에 자동적으로 할당하는 기능을 갖는 것이 있고, 이와 같은 컴파일러를 이용한 경우에는 명시적으로 지정하지 않아도, 중간 버퍼의 일부가 CPU의 레지스터에 할당되는 것으로 된다.
이와 같이, 반복 판독 기록되는 소용량의 중간 버퍼는 통상의 컴퓨터 시스템에서 특별한 배려를 행하지 않아도 고속으로 판독기록이 가능해지고 있다. 물론, 소프트웨어가 아니라 하드웨어 등으로 처리하는 경우에도, 소용량의 중간 버퍼를 이용한 쪽이 고속으로 판독기록 가능한 구성을 용이하게 실현할 수 있다.
데이터의 판독기록에 어느 정도의 시간을 요하는 오차 버퍼로의 판독기록 빈도가 감소하면, 그 정도만큼 도트 형성 유무의 판단을 신속하게 행하는 것이 가능해진다. 물론, 중간 버퍼를 이용하고 있어도, 논리적으로는 오차확산법 혹은 평균 오차 최소법과 동등한 처리를 행하기 때문에, 이들 방법과 동등한 화질을 유지할수 있다. 오차 버퍼로의 판독 기록하는 빈도를 감소시키기 위해서 중간 버퍼를 활용하는 구체적인 방법에는 여러 가지의 태양(態樣)이 존재하고 있고, 이들 각종의 태양에 관해서, 각종 실시예를 이용하여 이하에 설명한다.
B. 제1 실시예:
B-1. 장치구성:
도 2는 제1 실시예의 화상처리장치로서의 컴퓨터(100)의 구성을 나타내는 설명도이다. 컴퓨터(100)는 CPU(102)를 중심으로, ROM(104)나 RAM(l06)등을 버스(116
)로 서로 접속하여 구성된 주지(周知)의 컴퓨터이다. CPU(102)는 실제로 처리를 행하는 연산기와, 처리중의 데이터를 일시 보지하는 복수의 레지스터로 구성되어 있다. 레지스터에 보지되어 있는 데이터는 RAM(106)에 기억되어 있는 데이터보다도 훨씬 고속으로 처리하는 것이 가능하다. 물론, 레지스터 대신에 캐쉬메모리라고 하는 특수한 기억소자를 활용해도 좋다. 캐쉬메모리는 레지스터만큼은 아니지만, RAM(106)보다도 고속으로 데이터를 판독 기록할 수 있다. 또한, 캐쉬 메모리를 활용하면, 레지스터를 사용하는 경우보다도 다량의 데이터를 취급하는 것이 용이해진다.
컴퓨터(100)에는 플로피 디스크(124)나 콤팩트 디스크(126)의 데이터를 판독입력하기 위한 디스크 컨트롤러(DDC)(109)나, 주변기기와 데이터의 수수(授受)를 행하기 위한 주변기기 인터페이스(P-I/F)(108), CRT(l14)를 구동하기 위한 비디오 인터페이스(V-I/F)(112)등이 접속되어 있다. P-I/F(l08)에는 후술하는 컬러 프린터
(200)나, 하드 디스크(118)등이 접속되어 있다. 또한, 디지털 카메라(120)나, 컬러스캐너(122)등을 P-I/F(l08)에 접속하면, 디지털 카메라(120)나 컬러 스캐너(122)로 넣은 화상을 인쇄하는 것도 가능하다. 또한, 네트워크 인터페이스 카드(NIC)(11
0)를 장착하면, 컴퓨터(100)를 통신회선(300)에 접속하여, 통신회선에 접속된 기억장치(310)에 기억되어 있는 데이터를 취득할 수도 있다.
도 3은 제1 실시예의 컬러 프린터(200)의 개략구성을 나타내는 설명도이다. 컬러 프린터(200)는 청록, 자홍, 노랑, 검정의 4색 잉크의 도트가 형성 가능한 잉크젯프린트이다. 물론, 이들 4색의 잉크에 가하여, 염료농도가 낮은 청록(연청록)잉크와 염료농도가 낮은 자홍(연자홍)잉크를 포함시킨 합계 6색의 잉크 도트가 형성 가능한 잉크젯 프린터를 이용할 수도 있다. 또, 이하에서는 경우에 따라, 청록 잉크, 자홍 잉크, 노랑 잉크, 검정 잉크의 각각을, C잉크, M잉크, Y잉크, K잉크로 약칭하는 것으로 한다.
컬러 프린터(200)는 도시하는 바와 같이, 캐리지(240)에 탑재된 인자 헤드(241)를 구동하여 잉크의 토출 및 도트형성을 행하는 기구와, 이 캐리지(240)를 캐리지 모터(230)에 의해 플래턴(platen)(236)의 축방향으로 왕복 운동시키는 기구와, 용지 전송 모터(235)에 의해 인쇄용지(P)를 반송하는 기구와, 도트의 형성이나 캐리지(240)의 이동 및 인쇄용지의 반송을 제어하는 제어회로(260)로 구성되어 있다.
캐리지(240)에는 K잉크를 수납하는 잉크 카트리지(242)와, C잉크, M잉크, Y잉크의 각종 잉크를 수납하는 잉크 카트리지(243)가 장착되어 있다. 캐리지(240)에 잉크 카트리지(242, 243)를 장착하면, 카트리지내의 각 잉크는 도시하지 않는 도입관(導入管)을 통해, 인자 헤드(241)의 하면에 설치된 각 색마다 잉크 토출용 헤드(
244 내지 247)에 공급된다. 각 색마다 잉크 토출용 헤드(244 내지 247)에는 48개의 노즐(Nz)이 일정한 노즐 피치(k)로 배열된 노즐 열(列)이 1조(組)씩 설치되어 있다.
제어회로(260)는 CPU(261)과 ROM(262)와 RAM(263)등으로 구성되어 있고, 캐리지 모터(230)와 용지 전송 모터(235)의 동작을 제어함으로써 캐리지(240)의 주(主)주사와 부(副)주사를 제어함과 동시에, 컴퓨터(100)로부터 공급되는 인쇄 데이터에 의거하여, 각 노즐로부터 적절한 타이밍으로 잉크방울을 토출한다. 이렇게 해서, 제어회로(260)의 제어 하에서, 인쇄매체 위의 적절한 위치에 각 색의 잉크도트를 형성함으로써, 컬러 프린터(200)는 컬러화상을 인쇄할 수 있다.
더구나, 각 색의 잉크 토출 헤드로부터 잉크방울을 토출하는 방법에는 여러 가지 방법을 적용할 수 있다. 즉, 피에조(piezo)소자를 이용하여 잉크를 토출하는 방식이나, 잉크통로에 배치된 히터로 잉크 통로 내에 거품(bubble)을 발생시켜 잉크방울을 토출하는 방법 등을 이용할 수 있다. 그 위에 잉크를 토출하는 대신에, 열전사(熱轉寫) 등의 현상을 이용하여 인쇄용지 위에 잉크도트를 형성하는 방식이나, 정전기를 이용하여 각 색의 토너가루를 인쇄매체 위에 부착시키는 방식의 프린터이더라도 상관없다.
또한, 잉크토출 헤드로부터 토출하는 잉크방울의 크기를 제어하거나, 혹은 미세한 잉크방울을 1회(回)에 복수 토출하여, 토출하는 잉크방울의 수를 제어한다고 한 방법을 이용하여, 인쇄용지 위에 형성되는 잉크도트의 크기가 제어 가능한프린터, 소위 가변(variable) 도트 프린터를 이용하는 것도 가능하다.
B-2. 화상 데이터 변환처리의 개요:
도 4는 제1 실시예의 화상처리장치로서의 컴퓨터(100)가 수취된 화상 데이터에 소정의 화상처리를 가함으로써, 그 화상 데이터를 인쇄 데이터로 변환하는 처리의 흐름을 나타내는 흐름도이다. 이러한 처리는 컴퓨터(100)의 오퍼레이팅 시스템이 프린터 드라이버를 기동함으로써 개시된다. 이하, 도 4에 따라 제1 실시예의 화상 데이터 변환처리에 관해 간단히 설명한다.
프린터 드라이버는 화상 데이터 변환처리를 개시하면, 우선 처음에 변환해야 할 RGB 컬러화상 데이터의 판독입력을 개시한다(스텝 S100). 이어서, 들어온 화상 데이터의 해상도를 컬러 프린터(200)가 인쇄하기 위한 해상도로 변환한다(스텝 S102). 컬러화상 데이터의 해상도가 인쇄 해상도보다도 낮은 경우는 선형 보간을 행하는 것으로 인접화상 데이터 사이에 새로운 데이터를 생성하고, 역으로 인쇄 해상도보다도 높은 경우는 일정한 비율로 데이터를 솎아냄으로써 화상 데이터의 해상도를 인쇄 해상도로 변환한다.
이렇게 해서 해상도를 변환하면, 컬러화상 데이터의 색변환처리를 행한다(스텝 S104). 색변환 처리란, R, G, B의 계조값의 조합에 의해 표현되어 있는 컬러화상 데이터를, C, M, Y, K 등의 컬러 프린터(200)로 사용하는 각 색의 계조값의 조합에 의해 표현된 화상 데이터로 변환하는 처리이다. 색변환 처리는 색변환 테이블
(LUT)이라고 하는 3차원의 수표(數表)를 참조하는 것으로 신속하게 행할 수 있다.
색변환처리에 계속해서 계조수 변환처리를 개시한다(스텝 S106). 계조수 변환처리란 다음과 같은 처리이다. 색변환처리에 의해 변환된 계조 데이터는 각 색마다 256계조 폭을 갖는 데이터로서 표현되어 있다. 이에 대해, 본 실시예의 컬러 프린터(200)에서는 「도트를 형성한다」,「도트를 형성하지 않는다」중 어느 하나의 상태밖에 채용할 수 없다. 즉, 본 실시예의 컬러 프린터(200)는 국소적으로는 2계조밖에 표현할 수 없다. 거기서, 256계조를 갖는 화상 데이터를, 컬러 프린터(200)가 표현 가능한 2계조로 표현된 화상 데이터로 변환할 필요가 있다. 이와 같은 계조수의 변환을 행하는 처리가 계조수 변환처리이다. 상술한 바와 같이, 본 실시예에서는 중간 버퍼를 활용함으로써, 도트 형성 유무의 판단을 신속하게 행하는 것이 가능해지고 있다. 계조수 변환처리에 관해서는 나중에 상세히 설명한다.
이렇게 해서 계조수 변환처리를 종료하면, 프린터 드라이버는 인터레이스 처리를 개시한다(스텝 S108). 인터레이스처리는 도트 형성 유무를 나타내는 형식으로 변환된 화상 데이터를 도트의 형성순서를 고려하면서 컬러 프린터(200)에 전송해야 할 순서로 배열하는 처리이다. 프린터 드라이버는, 인터레이스 처리를 행하여 최종적으로 얻어진 화상 데이터를 인쇄 데이터로서 컬러 프린터(200)로 출력한다(스텝 S110). 컬러 프린터(200)는 인쇄 데이터에 따라 각 색의 잉크도트를 인쇄매체 위에 형성한다. 그 결과, 화상 데이터에 대응한 컬러화상이 인쇄매체 위에 인쇄된다.
이하에는 제1 실시예의 계조수 변환처리에서 중간 버퍼를 활용함으로써, 도트 형성 유무의 판단을 신속하게 행하는 처리에 관해 설명한다.
B-3. 제1 실시예의 계조수 변환처리:
중간 버퍼를 활용하여 도트 형성 유무의 판단에 요하는 시간을 단축화하는원리를 설명하기 위한 준비로서, 소위 오차확산법에서 도트 형성 유무의 판단을 행하는 방법에 관해 간단히 설명한다.
도 5는 오차확산법에서, 도트 형성 유무를 판단한 화소에서 발생한 계조 오차를 주변화소로 확산시키면서, 도트 형성 유무를 판단해 가는 모양을 개념적으로 나타낸 설명도이다. 또, 이하에서는 도트 형성 유무를 판단하려고 착안 한 화소를 착안 화소라고 한다. 도 5 (a)에 나타내는 바와 같이, P00과 부합(符合)한 화소(착안 화소)로 도트 형성 유무를 판단한 결과로서, 그 착안 화소의 화상 데이터에서의 계조값과의 사이에 계조 오차(E00)가 발생한 것으로 한다. 도면 중에 사선(斜線)을 행한 부분은 도트 형성 유무가 판단 필인 화소를 나타내고 있다. 오차확산법에서는 계조 오차(E00)에 소정의 중량 계수(오차확산계수)를 곱셈하고, 얻어진 값을, 착안 화소주변의 미 판단 화소로 확산한다. 한편, 이하에 사용하는 첨자(添字)는 다음 내용을 의미하는 것으로 한다. 예컨대, 첨자「00」은 착안 화소를 나타내고, 첨자「01」은 착안 화소의 오른쪽 옆의 화소를, 첨자「0 -1」는 왼쪽 옆의 화소를 나타낸다. 첨자「10」은 착안 화소의 바로 아래의 화소를, 첨자「-1 0」은 착안 화소의 바로 위의 화소를 나타낸다. 또한, 첨자「11」은 첨자「10」와 「01」이 조합된 것으로 생각하여, 착안 화소의 오른쪽 경사 아래의 화소를 나타내고 있는 것으로 한다.
도 6은 계조 오차를 확산할 때에 사용하는 오차확산계수의 설정예를 나타내는 설명도이다. 또, 도 6에서 사선이 부착되어 있는 화소위치는 착안 화소의 위치를 나타내고 있다. 이와 같은 착안 화소에서 주변화소로의 오차확산계수를 표시한매트릭스는 오차확산 매트릭스라고 한다. 예컨대, 도 6 (a)의 오차확산 매트릭스에서는 착안 화소의 오른쪽 옆에 오차확산계수(K01)의 값으로서 「1/4」이 설정되어 있다. 따라서, 이와 같은 오차확산 매트릭스를 사용하면, 착안 화소에서 발생한 계조 오차의 1/4 오차가 오른쪽 옆의 화소에 배분되는 것으로 된다. 마찬가지로, 착안 화소의 왼쪽 아래, 바로 아래, 오른쪽 아래의 각 화소에도 착안 화소에서 발생한 계조 오차의 1/4 오차가 배분된다. 오차확산 매트릭스는 도 6에 예시하는 것에 한하지 않고, 오차를 확산하는 범위나 오차 확산계수 등은 여러 가지의 값을 설정하는 것이 가능하고, 실제의 오차확산법에서는 양호한 화질이 얻어질 수 있도록, 적당하게 적절한 오차확산 매트릭스가 사용된다. 한편, 설명의 번잡화를 피하기 위해서, 이하의 설명에서는 예시한 오차확산 매트릭스 중에서 가장 확산범위가 좁은 매트릭스, 즉 도 6 (a)의 오차확산매트릭스를 사용하는 것으로서 설명한다.
오차확산 매트릭스로서 도 6 (a)의 매트릭스를 사용하는 것으로 하면, 도 5 (a)에 나타내는 바와 같이 착안화소(P00)로 생긴 계조오차(E00)는 오른쪽 옆의 화소(PO1), 왼쪽 아래의 화소(P1-1), 바로 아래의 화소(P1O), 오른쪽 아래의 화소(P1
1) 합계 4개의 화소에 각각 계조오차(E00)의 1/4씩 배분된다. 이렇게 해서 착안화소 주변 각각의 화소로 확산된 오차(확산오차)는 화소마다 분리된 상태로 기억해 둘 필요가 있다. 그 때문에 확산오차는 다수의 화소에 관해서의 확산오차를 기억하는 것이 가능한 대용량의 RAM(106)(도 2참조)에 기억된다.
화소(PO0)에 관해서의 계조오차를 주변화소로 확산하면, 이번은 오른쪽 옆의 화소(PO1)에 관해 도트형성유무의 판단을 개시한다. 도 5 (b)는 착안화소(P01)에관해서의 도트형성유무를 판단하는 모양을 개념적으로 나타내는 설명도이다. 도트형성판단에 있어서는 우선, 주변화소로부터 착안화소(PO1)에 배분되어 축적되어 있는 확산오차를 판독출력하고, 판독출력된 확산오차로 착안 화소(PO1)의 화상 데이터를 보정한다. 도 5 (b)에 나타낸 바와 같이, 착안화소(P01)에는 도트 형성 판단 필의 주변화소, 즉 화소(P-10), 화소(P-11), 화소(P-12), 화소(P00)의 4개의 화소로부터, 상술한 오차확산 매트릭스에 따라 확산되어 온 오차가 축적되어 있다. 이 확산오차를 RAM(l06)으로부터 판독출력하여, 착안화소(P01)의 화상 데이터를 보정하고, 얻어진 보정값을 소정의 임계값과 비교하는 것으로 도트의 형성유무를 판단한다. 판단의 상세에 관해서는 후술한다. 이렇게 해서 착안화소(PO1)에 관해서 도트의 형성유무를 판단하면, 화소(P01)에는 새로운 계조오차(E01)가 발생하기 때문에, 이 계조오차를 오차확산 매트릭스에 따라 주변화소로 확산한다. 이와 같이 오차확산법에서는 착안화소에서 계조오차가 발생할 때마다, 그 때마다 주변에 있는 복수의 화소로 확산하면서 도트형성유무를 판단하고 있다. 이 때문에, RAM(l06)에 대해 데이터를 빈번하게 판독기록해야 할 필요가 있기 때문에, 그 정도만큼, 도트형성유무의 판단에 요하는 시간도 길어진다.
이에 대해 본 실시예의 계조수 변환처리에서는 중간 버퍼를 활용함으로써, 도트형성유무의 판단에 요하는 시간을 단축화한다. 도 7은 중간버퍼를 활용하여 판단에 요하는 시간을 단축화하는 원리를 나타내는 설명도이다. 본 실시예에서는, CPU(102)에 내장되고 있는 레지스터를 중간 버퍼로서 사용한다. 상술한 바와 같이, 레지스터는 RAM(l06)에 비해 고속으로 처리하는 것이 가능하다. 물론, 레지스터가아니라, 캐쉬메모리를 이용하여 실질적으로 동등한 처리를 하더라도 상관없다. 이하, 도 7을 참조하면서 제1 실시예에서 도트형성유무의 판단에 요하는 시간을 단축화하는 원리에 관해 설명한다.
도 7 (a)는 착안화소(P00)에 관해 도트형성유무를 판단한 모양을 나타내고 있다. 상기 판단을 행한 결과로서 착안화소에는 계조오차(E00)가 발생하고 있다. 도 7(a)의 오른쪽에 표시한 6개의 직사각형(矩形)은 중간 버퍼로서 사용되는 6개의 레지스터를 모식적으로 표시한 것이다. 설명의 편의상, 이하에서는 각 레지스터에 R01, R02, Rl-1, R10, R11, R12와 부합을 붙여 구별한다. 제1 실시예의 계조수 변환처리에서는 착안화소(P00)에서 발생한 계조오차(E00)를 직접 RAM(106)으로 확산하는 것은 아니고, 일단 레지스터에 축적한다. 즉, 레지스터(R01)의 값을 착안화소의 오른쪽 옆의 화소(P01)에 배분해야 할 오차로 갱신한다. 화소(P01)에 배분해야 할 오차는 오차확산 매트릭스에 따라 K01 ·E00으로 구할 수 있다. 마찬가지로, 레지스터(R1-1)의 값을 착안화소(P00)의 왼쪽 아래의 화소(P1-1)에 배분해야 할 오차로 갱신하고, 레지스터(R10)의 값을 바로 아래의 화소(P10)에 배분해야 할 오차로, 레지스터(Rl1)의 값을 오른쪽 아래의 화소(P11)에 배분해야 할 오차로, 각각 갱신한다. 각각의 오차는 오차확산 매트릭스에 따라 K1-1·E00, K10·E00, K11·E00으로 구할 수 있다.
이렇게 해서 주변의 4개의 화소에 배분해야 할 각각의 확산오차로, 대응하는 4개의 레지스터의 값을 갱신하면, 이번은 화소(PO0)의 오른쪽 옆의 화소(PO1)에 관해 도트 형성 유무를 판단한다. 화소(PO1)의 판단에 있어서는, 새로운 착안화소(PO
1)의 확산오차를 RAM(l06)으로부터 판독출력하여, 판독출력된 오차와 레지스터(R01
)에 기억되어 있는 오차를 덧셈한 값으로, 착안화소(PO1)의 계조 데이터를 보정한다. 이와 같이, 착안화소(P01)의 확산오차와 레지스터(R01)의 오차를 덧셈한 값으로 보정하면, 통상의 오차확산법과 실질적으로는 완전히 같은 처리를 행할 수 있다. 즉, 통상의 오차확산법에서는 도 5를 이용하여 설명한 바와 같이, 계조오차가 발생할 때마다 이것을 주변의 화소로 확산해 두고, 오른쪽 옆의 화소(PO1)의 도트형성유무를 판단하는 때는 화소(PO1)에 배분되어 있는 확산오차를 판독출력하여 화소(PO1)의 계조 데이터를 보정하고, 보정한 값에 의거하여 도트의 형성유무를 판단하고 있다. 이에 대해, 본 실시예에서는 도 7 (a)에 나타내는 바와 같이, 화소(P01
)에 배분되는 오차가 레지스터(R01)에 기억되어 있기 때문에, 화소(P01)의 확산오차와 레지스터(R01)에 기억된 오차를 덧셈한 값으로 계조 데이터를 보정하는 것으로, 통상의 오차확산법과 실질적으로 완전히 동등한 처리를 행할 수 있는 것이다. 이렇게 해서 새로운 착안화소(PO1)에 관해 도트의 형성유무를 판단하면, 착안화소(
PO1)에는 새로운 계조오차(E01)가 발생한다(도 7 (b)참조).
화소(P01)에 발생한 계조오차(E01)도 화소(P00)의 계조오차(E00)와 마찬가지로, 오차확산 매트릭스에 설정된 비율로 각각의 레지스터로 확산시킨다. 도 7 (b)를 참조하면서 구체적으로 설명한다. 우선, 화소(P02)는 착안화소(P01)의 오른쪽 옆의 화소이므로, 대응하는 레지스터(R02)의 값을 오차확산 매트릭스로 설정된 오차확산계수(K01)와 계조오차(E01)를 곱셈한 값으로 갱신한다. 화소(P10)는 착안화소(P02)의 왼쪽 아래의 화소이므로, 대응하는 레지스터(Rl0)의 값에는 오차확산계수(K1-1)와 계조오차(E01)를 곱셈한 값(Kl-1·E01)을 덧셈한다. 여기서, 도 7 (b)에 나타내는 바와 같이, 레지스터(R10)에는 이미 화소(P00)로부터 확산되어 온 오차(K10·E00)가 기억되어 있기 때문에, 이미 확산되어 있는 오차와 새롭게 확산되어 온 오차를 레지스터(R02) 위에서 덧셈하는 것이다. 이 결과, 레지스터(R02)의 값은 2개의 화소로부터 확산되어 온 오차의 합(Kl0·E00+K1-1·E01)으로 갱신된다. 이하, 화소(P11) 및 화소(P12)에 관해서도 마찬가지로, 대응하는 레지스터(Rl1)의 값은 확산오차(Kl1 ·E00 + Kl0 ·E01)로 갱신되고, 레지스터(R12)의 값은 K11 ·E01로 갱신된다.
이상과 같은 처리를 행함으로써, 화소(P00)에서 발생한 계조오차(E00)와 화소(P01)에서의 계조오차(E01)가 각각의 레지스터로 확산된 것으로 된다. 그래서, 도 7 (c)에 나타내는 바와 같이, 각 레지스터에 기억되어 있는 오차를 주변화소에 대응하는 오차 버퍼(구체적으로는 RAM l06)에 기록 입력해 간다. 즉, 화소(P02)의 오차 버퍼에는 레지스터(R02)에 기억되어 있는 값(K01 ·E01)을 덧셈하고, 화소 (P1-1)의 오차 버퍼에는 레지스터(R1-1)에 기억되어 있는 값(K1-1 ·E00)을, 화소(
P10)에는 레지스터(R10)의 값(Kl0 ·E00 + Kl-1 ·E01)을, 화소(P11)에는 레지스터
(R11)의 값(K11 ·E00 + K10 ·E01)을, 화소(P12)에는 레지스터(R12)의 값(K11 ·E01)을 각각 덧셈하여 간다. 이렇게 함으로써, 통상의 오차확산법에서 화소(P00)및 화소(P01)에서의 오차를 확산한 상태(도 5 (c)참조)와 같은 오차가 주변의 5개의 화소의 각 오차 버퍼로 확산되는 것으로 된다. 한편, 화소(PO1)에 관해서는 이미 도트형성유무의 판단을 종료하고 있기 때문에, 레지스터(R01)의 값을 RAM(106)에 덧셈할 필요는 없다. 이와 같이 본 실시예의 방법에서는 2화소분의 도트형성유무를 판단하여, 5화소분의 오차 버퍼로 오차를 확산하고 있기 때문에, 1화소분의 판단을 할 때마다 2.5화소의 비율로 오차버퍼로의 오차확산을 행하고 있는 것으로 된다.
한편, 이상에서는 설명의 편의상, 2치화(値化)를 행한 화소주변의 5개의 화소로 확산되는 모든 오차를 일단 레지스터에 기억하고, 2개의 화소로부터 확산되어 오는 오차를 레지스터 위에서 덧셈하고 나서 오차 버퍼로 확산하는 것으로 하여 설명하였다. 물론, 레지스터 위에서 오차의 덧셈을 하지 않는 화소, 예컨대 화소(P1-1),화소(P02), 화소(P12)에 관해서는 오차 버퍼에 직접, 오차를 확산해도 상관없다.
도 5에 나타낸 통상의 오차확산법에서는 1화소의 도트형성판단을 행할 때마다 주변의 4화소로 오차를 확산하고 있었다. 이에 대해, 본 실시예의 방법에서는 아직 2치화하지 않고 있는 동일한 화소에, 복수의 화소로부터 확산되는 오차를 일단 레지스터 위에서 덧셈하고 나서 정리하여 확산함으로써, 1화소분의 판단을 할 때마다 2.5화소분의 오차 버퍼로 오차를 확산하는 것만으로 좋다. 물론, 통상의 오차확산법에 대해, 오차를 레지스터에 배분하는 공정이 추가되어 있지만, 레지스터 값의 갱신 혹은 레지스터 위에서의 덧셈으로 한 처리는 RAM으로 오차를 확산시키는 처리에 비해 훨씬 고속으로 행할 수 있기 때문에, 전체로서 도트형성유무의 판단에 요하는 시간을 단축화하는 것이 가능해진다. 한편, 여기서는 레지스터에 기억하는 것으로 설명하지만, 반드시 레지스터에 한정되지 않고, 오차 버퍼로서 사용되어 있는 기억수단보다도 고속으로 판독기록 가능한 기억수단이기만 하면 좋다. 또한, 예컨대, CPU와 RAM의 데이터의 교환을 고속으로 행하기 때문에 설치되어 있는 캐쉬메모리를 활용함으로써, 실질적으로 동등한 처리를 행하는 것이라도 상관없다. 본 실시예에서 이용하는 중간 버퍼는 소용량의 메모리영역을 각 화소의 처리에 반복 사용하기 때문에, 통상은 설계자가 명시적으로 지정하지 않더라도, 컴파일러나 CPU자체의 기능에 의해 자동적으로 레지스터나 캐쉬메모리에 할당되고, 고속으로 판독기록하는 것이 가능해진다.
더구나, 이상의 설명에서는 2개의 화소로부터 확산되어 오는 오차를 레지스터 위에서 직접, 덧셈하는 것으로 했지만, 각각의 오차를 별도의 레지스터에 일단 기억한 후, 다른 레지스터 위에서 덧셈해도 상관없다. 예컨대, 도 7 (b)의 화소(P10)로 확산되는 오차를 예로 들어 설명하면, 우선 레지스터(R10)의 값을 화소(P00)로부터의 오차(K10 ·E00)로 갱신하고, 이어서 레지스터(R10) 위에서, 화소
(P01)로부터의 오차(K1-1 ·E01)를 덧셈하고 있다. 이와 같은 처리로 바꾸어, 화소(PO0)로부터의 오차와 화소(PO1)로의 오차를 각각 레지스터(Ra)와 레지스터(Rb
)에 기억하여 두고, 2개의 레지스터의 값을 레지스터(R10) 위에서 덧셈해도 상관없는 것은 물론 이다.
도 8은 이상으로 설명한 본 실시예의 계조수 변환처리의 흐름을 나타내는 흐름도이다. 이 처리는 컴퓨터(100)의 CPU(102)에 의해 행하여진다. 한편, 상술한 바와 같이 본 실시예의 컬러 프린터는, C, M, Y, K의 4색의 잉크도트가 형성 가능한 프린터이고, 도 8에 나타내는 계조수 변환처리도 각 색마다 행하고 있지만, 이하에서는 설명의 번잡화를 피하기 위해서, 잉크도트의 색을 특정하지 않고서 설명한다. 또, 상기의 4색에 더하여, LC잉크, LM잉크를 추가하여 6색 프린터를 사용해도 좋은 것은 물론 이다.
또한, 상술한 바와 같이 본 실시예의 컬러 프린터는 각 색마다 크기가 다른 도트가 형성 가능한 가변 도트 프린터로 하는 것도 가능하다. 가변 도트 프린터를 사용하는 경우, 예컨대, 대 도트, 중 도트, 소 도트의 각종 도트가 형성 가능한 가변 도트 프린터를 이용하는 경우에 이하에 설명하는 계조수 변환처리는 각종크기의 도트마다 행해진다.
이와 같이, 사용하는 잉크의 색이 증가하거나, 여러 가지 크기의 도트가 형성 가능해짐으로써 계조수 변환처리를 행하는 회수가 증가하기 때문에, 그 만큼 처리에 요하는 시간도 길어지는 경향이 있다. 이하에 설명하는 본 실시예의 계조수 변환처리는 신속한 처리가 가능하기 때문에, 이와 같은 경우에도 썩 알맞게 적용할 수 있다.
본 실시예의 계조수 변환처리를 개시하면, 우선 처음에 도트 형성 유무를 판단하려고 하고 있는 2화소분의 화상 데이터(Cd1, Cd2)를 판독입력한다(스텝 S200). 한편, 여기서는 편의상 왼쪽의 화소를 제1 화소라고 하고, 오른쪽의 화소를 제2 화소라고 하는 것으로 한다. 화상 데이터는 컴퓨터(100)에 내장되어 있는 RAM(106)에 기억되어 있다. 이어서, 제1 화소 및 제2 화소의 각각 확산되어 축적되어 있는 확산오차(Ed1, Ed2)를 오차 버퍼로부터 판독출력한다(스텝 S202). 오차 버퍼도 RAM(l06) 위에 설치되어 있다.
계속해서, 제1 화소의 화상 데이터(Cd1)와 제1 화상의 확산 오차(Ed1)를 덧셈함으로써, 제1 화소의 보정 데이터(Cx1)를 산출한다(스텝 S204). 이렇게 하여 얻어진 보정 데이터(Cx1)와 소정의 임계값(th)을 비교하여(스텝 S206), 보정 데이터 쪽이 크면 제1 화소에 도트를 형성한다고 판단하여, 제1 화소에 관해서의 판단결과를 나타내는 변수(Cr1)에 도트를 형성하는 것을 의미하는 값「1」을 기록 입력한다
(스텝 S208). 그렇지 않으면 제1 화소에는 도트를 형성하지 않는다고 판단하여, 변수(Cr1)에 도트가 형성하지 않은 것을 의미하는 값「O」을 기록 입력한다(스텝 S210).
이렇게 해서 제1 화소에 관해서의 도트 형성 유무를 판단하면, 상기 판단에 따라 제1 화소에 발생하는 계조 오차를 산출한다(스텝 S212). 제1 화소에서 발생하는 계조 오차(E1)는, 제1 화소의 보정 데이터(Cx1)로부터 도트를 형성함으로써, 혹은 도트를 형성하지 않음으로써 제1 화소로 표현되는 계조값(이하에서는, 이러한 계조값을 결과값이라고 한다)을 뺄셈하는 것으로 구할 수 있다.
이어서, 제1 화소에서 발생한 계조 오차(E1)를 중간 버퍼로 확산한다(스텝 S214). 이 처리는, 도 7 (a)을 이용하여 설명한 처리에 상당하는 처리이다. 즉, 제1 화소의 계조 오차(E1)로 오차확산 매트릭스에 설정된 오차확산계수를 곱셈하여, 주변화소로 확산해야 할 확산 오차를 산출하고, 얻어진 확산 오차를 각각의 중간 버퍼에 기억해 둔다.
제1 화소에서 발생한 오차를 중간 버퍼로 확산하면, 제2 화소에 관해서의 도트 형성 유무의 판단을 개시한다. 제2 화소에 관해서의 판단을 행하기 위해서는제2 화소의 보정 데이터를 산출할 필요가 있다. 거기서, 미리 판독출력해 둔 제2 화소의 화상 데이터(Cd2)와, 제2 화소의 확산 오차(Ed2)와, 제1 화소에서 제2 화소로 배분되어 온 오차를 덧셈하여, 제2 화소의 보정 데이터(Cx2)를 산출한다(스텝 S216). 도 7을 이용하여 설명한 바와 같이, 제1 화소로부터 제2 화소로 확산되어 온 오차는 미리 정해진 중간 버퍼에 기억되어 있다. 또, 도 8에 나타내는 실시예에서는 제1 화소의 화상 데이터 및 확산 오차를 판독출력함과 동시에, 제2 화소의 화상 데이터 및 확산 오차도 미리 판독출력해 두는 것으로 했지만, 물론 제2 화소에 관해서는 보정 데이터의 산출에 필요하게 되고 나서, 화상 데이터와 확산 오차를 판독출력하는 것으로 해도 좋다. 제1 화소 및 제2 화소에 관해서의 화상 데이터와 확산 오차를 1회에 판독출력하는 경우에는 메모리 위에서 연속한 위치로부터 판독출력한다고 한 방법을 채용함으로써, 이들 데이터를 신속하게 판독출력하는 것이 가능하게 된다.
더구나, 제2 화소의 화상 데이터 및 확산 오차에 관해서는 스텝(S200 및 S202)이 아니라, 스텝(S216)의 직전에서 판독출력하도록 해도 상관없다. 이렇게 하면, CPU(102)의 레지스터 수에 한정이 있는 경우에, 제2 화소의 화상 데이터 및 확산 화소를 판독출력할 때까지의 사이는 레지스터를 다른 목적으로 사용하는 것이 가능해지기 때문에 썩 알맞다.
스텝(S216)에서 제2 화소에 관해서의 보정 데이터(Cx2)를 산출하면, 제1 화소의 경우와 마찬가지로, 소정의 임계값(th)과 비교함으로써 도트 형성 유무를 판단한다(스텝S218). 보정 데이터(Cx2)쪽이 크면 제2 화소에 도트를 형성한다고 판단하여, 도트를 형성하는 것을 의미하는 값「1」을 기록입력하고(스텝 S220), 그렇지 않으면 도트를 형성하지 않은 것을 의미하는 값「0」을 기록 입력한다(스텝 S222). 이어서, 제2 화소의 계조 오차(E2)를 산출한다(스텝 S224). 제2 화소에서 발생하는 계조 오차(E2)도 제1 화소의 계조 오차(E1)와 마찬가지로 하여, 제2 화소의 보정 데이터(Cx2)로부터, 제2 화소에 관해서의 결과값(화소에 관해서의 도트 형성 유무를 판단함으로써, 그 화소에 표현되는 계조값)을 뺄셈하는 것으로 구할 수 있다.
계속해서, 제2 화소의 계조 오차를 중간 버퍼로 확산하는 처리를 행한다(스텝 S226). 이 처리는 도 7(b)을 이용하여 설명한 처리에 상당하는 처리이다. 즉, 제2 화소의 계조 오차(E2)로 오차확산 매트릭스에 설정된 각 화소의 오차확산계수를 곱셈하여, 주변화소로 확산해야 할 확산 오차를 산출하고, 얻어진 확산 오차를 각각의 중간 버퍼에 기억시킨다. 여기서, 중간 버퍼에 제1 화소로부터 배분되어 온 오차가 이미 기억되어 있는 경우에는 이미 기억되어 있는 오차에 새롭게 배분한 오차를 덧셈하여 기억한다. 도 7 (b)에 나타낸 예에서는 레지스터(R10) 및 레지스터(
R11)의 2개의 레지스터에 관해서는 이미 배분되어 있는 오차가 존재하기 때문에, 이것에 새롭게 배분한 오차를 덧셈하여 기억시킨다. 이 결과, 5개의 레지스터에는 제1 화소 및 제2 화소로부터, 주변의 각 화소로 확산해야 할 오차가 축적되는 것으로 된다. 그래서, 계속되는 스텝(S228)의 처리에서는 중간 버퍼에 화소마다 기억되어 있는 오차를, RAM 위의 오차 버퍼에 덧셈하고(도 7 (c)참조), 덧셈하고 끝나면 중간 버퍼를 리세트해 둔다.
이어서, 모든 화소에 관해서 도트 형성 유무를 판단했는지의 여부를 판단하고(스텝 S230), 미 판단의 화소가 남아 있으면 스텝(S200)으로 되돌아가 계속되는 일련의 처리를 행한다. 이렇게 해서 모든 화소에 관해, 도트 형성 유무의 판단을 종료할 때까지, 계조 오차를 주변화소로 확산하면서, 2화소씩 도트 형성 유무를 판단하고, 모든 화소에 관해 판단을 종료하면, 본 실시예의 계조수 변환처리를 종료하여, 도 4의 화상 데이터 변환처리로 복귀한다.
이상으로 설명한 본 실시예의 계조수 변환처리에서는 2화소분의 도트 형성 유무를 판단할 때마다, 5화소분의 오차 버퍼로 오차를 확산하면 좋다. 통상의 오차확산법을 이용하여 마찬가지의 처리를 행하기 위해서는 1화소의 판단을 할 때마다 4화소분의 오차 버퍼로 오차를 확산하지 않으면 안되는 것과 비교하면, 본 실시예의 계조수 변환처리를 채용하는 것으로, 오차 버퍼로의 오차의 확산에 요하는 시간을 크게 단축할 수 있다. 특히, 계조수 변환처리에서는 화상을 구성하는 다수의 화소에 관해 도트 형성 유무를 판단함과 동시에, 발생한 계조 오차를 주변화소로 확산해 가지 않으면 안되기 때문에, 오차 버퍼로의 오차의 확산에 요하는 시간은 계조수 변환처리에 요하는 시간 중에서 비교적 큰 비율을 차지하고 있다. 이것으로부터, 본 실시예의 계조수 변환처리를 채용하여 오차의 확산에 요하는 시간을 단축화하면, 계조수 변환처리를 포함시킨 화상처리전체를 신속하게 행할 수 있고, 나아가서는 화상을 신속하게 인쇄하는 것이 가능해진다.
이상의 설명에서는 설명의 편의상, 2화소씩 도트 형성 유무를 판단하는 것으로서 설명했다. 즉, 2개의 화소에서 생기는 계조 오차를 중간 버퍼에 축적해 두고, 2개의 화소로부터 확산되어 온 오차를 중간 버퍼 위에서 덧셈하고, 정리하여 오차버퍼로 확산한다. 물론, 보다 많은 화소에 관해 도트 형성 유무를 판단하고, 발생한 오차를 중간 버퍼 위에서 덧셈하도록 해도 좋다. 예컨대, 3화소씩 도트 형성 유무를 판단하는 것으로 한 경우는 도 9 (a)에 나타내는 바와 같이, 도트 형성 유무를 판단하는 화소(도면 중에 사선을 붙여서 표시)의 주변에 있는 6개의 화소의 오차 버퍼로 오차를 확산하면 좋다. 즉, 판단을 행하는 화소 1개당 2화소분의 오차 버퍼로 오차를 확산하면 충분한다. 그 위에, 6화소씩 도트 형성 유무를 판단한 경우는 도 9 (b)에 나타내는 바와 같이, 9화소분의 오차 버퍼로 오차를 확산하면 좋기 때문에, 판단화소 1개당으로서는 1.5화소분의 오차 버퍼로 오차를 확산하면 좋다. 이와 같이, 1회에 도트 형성 유무를 판단하는 화소수를 많게 할수록, 판단화소 1화소당으로 확산하는 오차 버퍼의 화소수가 감소하기 때문에, 계조수 변환처리에 요하는 시간을 단축화시키는 것이 가능하게 된다.
B-4. 변형예:
또한, 이상으로 설명한 제1 실시예의 계조수 변환방법에서는 제1 화소 및 제2 화소에서 주변화소로 확산되는 확산 오차를 각 계조 오차에 의거하여 산출하고, 주변화소마다 축적해 두는 것으로 하여 설명했지만, 다음과 같이 해도 좋다. 즉, 제1 화소 및 제2 화소에서 발생한 계조 오차 그 자체를 중간 버퍼에 기억해 두고, 이들 기억하고 있는 계조 오차에서 주변화소로 확산해야 할 확산 오차를 산출하고, 각 화소에 대응하는 오차 버퍼에 기억시키도록 해도 좋다. 이러한 방법은 중간 버퍼에 기억되는 값이 축적중의 확산 오차인지, 계조 오차인지 차이가 있지만, 오차 버퍼에는 같은 오차가 기억되는 것이므로 실질적으로 동등한 처리를 행할 수있다. 이하, 이와 같은 제1 실시예의 변형예에 관해 설명한다.
도 10은 제1 실시예의 변형예에서의 계조수 변환방법의 흐름을 나타내는 흐름도이다. 이하, 도 8에 나타낸 제1 실시예의 계조수 변환처리와 다른 부분을 중심으로, 변형예의 계조수 변환방법에 관해, 도 10을 참조하면서 간단하게 설명한다.
변형예에서도 제1 실시예의 계조수 변환처리와 마찬가지로, 처리를 개시하면 우선 처음에 제1 화소와 제2 화소의 화상 데이터(Cdl, Cd2)를 판독 입력한다(스텝 S300). 여기서, 제1 화소란 도트 형성 유무를 판단하고자 하고 있는 2개의 화소 중의 왼쪽의 화소를 말하고, 제2 화소란 오른쪽의 화소를 말한다. 이어서, 제1 화소 및 제2 화소의 각각으로 확산되어 있는 확산 오차(Ed1, Ed2)를 오차 버퍼로부터 판독출력한다(스텝 S302). 오차 버퍼는 제1 실시예의 경우와 마찬가지로 RAM(106)위에 설치되어 있다. 이어서, 제1 화소의 화상 데이터와 확산 오차를 덧셈하여, 제1 화소의 보정 데이터(Cx1)를 산출한다(스텝 S304). 계속해서, 보정 데이터(Cx1)와 소정의 임계값(th)을 비교하고(스텝 S306), 보정 데이터 쪽이 크면 제1 화소에 도트를 형성한다고 판단하여, 제1 화소에 관해서의 판단결과를 나타내는 변수(Cr1)에, 도트를 형성하는 것을 의미하는 값「1」을 기록 입력한다(스텝 S308). 그렇지 않으면, 제1 화소에는 도트를 형성하지 않는다고 판단하여, 도트 형성하지 않는 것을 의미하는 값「O」을 변수(Cr1)에 기록 입력한다(스텝 S310). 이렇게 해서 제1 화소에 관해서의 도트 형성 유무를 판단하면, 그 판단에 따라 제1 화소에 발생하는 계조 오차를 산출한다(스텝 S312). 계조 오차는 제1 실시예의 경우와 마찬가지로, 보정 데이터(Cx1)로부터 결과값을 뺄셈함으로써 구할 수 있다.
제1 실시예의 변형예에서는 이렇게 해서 산출한 제1 화소의 계조 오차(E1)를 중간 버퍼에 기억한다(스텝 S314). 즉, 제1 실시예의 계조수 변환처리에서는 계조 오차를 중간 버퍼로 확산시켰지만, 변형예의 계조수 변환처리에서는 계조 오차를 확산시키는 일없이, 그대로 중간 버퍼에 기억하는 것이다.
제1 화소의 계조 오차(E1)를 중간 버퍼에 기억하면, 제2 화소에 관해서의 도트 형성 유무를 판단하기 위해서, 제2 화소의 보정 데이터(Cx2)를 산출한다(스텝 S316). 즉, 미리 판독출력해 둔 제2 화소의 화상 데이터(Cd2)와 확산 오차(Ed2)와, 제1 화소로부터 확산되어 오는 오차를 덧셈한다. 제1 화소로부터의 오차는 중간 버퍼에 기억되어 있는 제1 화소의 계조 오차(E1)와 오차확산계수를 곱셈하는 것으로 구해진다. 제1 실시예의 경우와 마찬가지로, 오차확산계수의 값은 오차확산 매트릭스에 설정되어 있다. 이렇게 해서 산출한 제2 화소의 보정 데이터(Cx2)와 소정의 임계값(th)을 비교하여(스텝 S318), 보정 데이터(Cx2) 쪽이 크면 도트를 형성한다고 판단하고, 제2 화소에 관해서의 판단결과를 나타내는 변수(Cr2)에 도트를 형성하는 것을 의미하는 값「1」을 기록 입력한다(스텝 S320). 그렇지 않으면, 도트는 형성하지 않는다고 판단하여, 변수(Cr2)에 도트를 형성하지 않는 것을 의미하는 값「0」을 기록 입력한다(스텝 S322). 이어서, 제2 화소에 관해서의 계조 오차(E2)를 산출하고(스텝 S324), 산출한 계조 오차(E2)는 주변화소로 확산시키는 일없이, 그대로 중간 버퍼로 일단 기억한다(스텝 S326). 이 때, 제2 화소의 계조 오차(E2)는 먼저 기억해 둔 제1 화소의 계조 오차(E1)와는 별개로 기억해 둔다. 제2 화소의 계조 오차(E2)는 제1 화소의 계조 오차(E1)와 마찬가지로, 제2 화소의 보정 데이터(C
x2)로부터 결과값을 뺄셈하여 구할 수 있다.
이렇게 해서, 제1 화소의 계조 오차(E1)와 제2 화소의 계조 오차(E2)를 각각의 중간 버퍼에 기억하면, 2개의 계조 오차를 정리하여 오차 버퍼로 확산시킨다. 이 처리를 도 7을 이용하여 설명한다. 도 7에서는 화소(P00)가 제1 화소에 대응하고, 화소(P01)가 제2 화소에 대응하고 있다. 전술한 바와 같이, 제1 화소 및 제2 화소에서 발생한 계조 오차는, 이들 화소의 주변에 있는 5개의 화소에 소정의 비율로 확산된다. 예컨대, 제1 화소의 왼쪽 아래에 있는 화소(P1-1)에는 화소(PO0)로부터의 오차(Kl-1 ·E00)가 확산된다. 여기서, Kl-1은 계조 오차를 왼쪽 아래의 화소로 확산시킬 때 사용하는 오차확산계수이고, 오차확산계수의 값은 오차확산 매트릭스에 설정되어 있다. 또한, 화소(P10)에는 제1 화소로부터의 오차(K10·E00)와, 제2 화소로부터의 오차(K1-1·E01)를 덧셈한 오차(K10 ·E00 + K1-1 ·E01)가 확산된다. 다른 3개의 화소에 관해서도 마찬가지로, 화소(P11)에는 Kl1 ·E00 + K10 ·E01이, 화소(P12)에는 K11 ·E01이, 화소(P02)에는 K01 ·E01의 값이 각각 확산된다. 이와 같이, 주변의 각 화소로 확산되는 오차의 값은, 계조 오차(E1) 및 계조 오차(E2)가 결정되면 오차확산계수에 의거하여 산출할 수 있다. 거기서, 스텝(S328)에서는 중간 버퍼에 기억되어 있는 제1 화소의 계조 오차(E1)와 제2 화소의 계조 오차(E2)를 이용하여, 제1 화소와 제2 화소의 주변의 각 화소로 확산하는 오차를 산출하고, 각 화소에 대응하는 오차 버퍼에 덧셈해 가는 것이다. 이러한 처리가 종료되면, 다음 화소의 처리에 사용하기 위해서, 계조 오차(E1, E2)를 기억하고 있는 중간 버퍼를 리세트해 둔다.
이어서, 모든 화소에 관해 도트 형성 유무를 판단했는지의 여부를 판단하고 (스텝 S330), 미 판단의 화소가 남아 있으면 스텝(S300)으로 되돌아가 계속되는 일련의 처리를 행한다. 이렇게 해서 모든 화소에 관해 도트 형성 유무를 판단하면, 제1 실시예의 변형예의 계조수 변환처리를 종료하여, 도 4의 화상 데이터 변환처리로 복귀한다.
이상으로 설명한 변형예의 방법에 의해서도, 제1 실시예의 계조수 변환처리와 실질적으로 동등한 처리를 행할 수 있다. 이러한 변형예의 방법에 의하면, 제1 실시예의 방법보다도 중간 버퍼의 용량을 절약할 수 있다.
C. 제2 실시예:
C-1. 제2 실시예에서 계조수 변환처리의 시간을 단축화하는 원리:
이상으로 설명한 제1 실시예의 계조수 변환처리에서는 도트 형성 유무를 판단하여 발생한 계조 오차를 고속으로 판독기록 가능한 레지스터 등의 중간 버퍼로 확산해 두고, 소정 화소수의 도트 형성 유무의 판단을 종료할 때마다, 중간 버퍼로 확산되어 있는 모든 오차를 오차 버퍼에 덧셈해 간다. 이에 대해, 이하에 설명하는 제2 실시예의 계조수 변환처리에서는 도트 형성 유무를 판단할 때마다, 1화소분씩 오차 버퍼에 덧셈해 간다. 후술하는 바와 같이, 제2 실시예의 방법에 의하면, 제1 실시예의 방법보다도 적은 레지스터수로 계조수 변환처리를 실현할 수 있고, 그 위에 레지스터 등의 중간 버퍼에서 오차 버퍼로의 기록입력 빈도도 적게 할 수 있다. 이하, 이러한 제2 실시예에 관해 설명한다.
처음에 제2 실시예의 처리원리, 즉 1화소의 도트 형성 유무를 판단할 때마다1화소분의 확산 오차를 오차 버퍼에 덧셈해 감으로써 통상의 오차확산법과 실질적으로 동등한 처리를 행하는 원리를 도 11을 참조하면서 설명한다. 도 11의 사선을 붙인 부분은, 도트형성판단을 행한 화소의 영역을 나타내고 있다. 한편, 이하에서도 설명의 편의를 위해, 제1 실시예의 경우와 마찬가지로 오차확산 매트릭스는 도 6 (a)에 나타낸 매트릭스를 사용하는 것으로 한다. 도 11 (a)는 화소(P00)에 관해서의 도트 형성 유무의 판단을 행하고, 생긴 계조 오차(E00)를 주변화소로 확산하고 있는 모양을 나타내고 있다.
여기서, 굵은 파선으로 둘러싸여 나타낸 화소(P11)에 착안하면, 화소(P11)에는 화소(P00)에서 생긴 오차(E00)에 가하여, 화소(P00)의 오른쪽 옆의 화소(P01)에서 생긴 오차(E01)와, 그 더욱 오른쪽 옆의 화소(P02)에서 생긴 오차(E02)가 배분되어 있다 {도 11 (b), (c)참조}. 요컨대 1개의 화소에는 연속하는 3개의 화소로부터 계속하여 오차가 배분되어 있는 것으로 된다. 한편, 연속하는 3개의 화소로부터 오차가 배분되는 것은 도 6 (a) 혹은 도 6(e)에 나타내는 오차확산 매트릭스를 이용한 경우에 다른 매트릭스, 예컨대 도 6 (b)나 도 6(f)의 매트릭스를 이용한 경우는 연속하는 5개의 화소로부터의 오차가, 도 6 (c)의 매트릭스를 이용한 경우는 연속하는 7개의 화소로부터의 오차가, 각각 계속하여 배분되는 것으로 된다. 이와 같이, 각 화소에는 연속하는 화소로부터 계속하여 오차가 배분되어 오기 때문에, 배분되어 오는 오차를 화소마다 중간 버퍼 위에서 축적하고, 소정 화소수의 오차를 축적하고 끝나면, 그 화소에 관해서는 일단 오차의 확산이 종료되었다고 생각하여, 중간 버퍼에 축적한 오차를 오차 버퍼에 기록 입력해 간다. 이렇게 해서, 일단 오차의 축적이 종료되었다고 생각되는 중간 버퍼의 오차를 대응하는 화소의 오차 버퍼에 기록 입력해 가면, 같은 화소의 오차 버퍼에 몇 번이나 오차를 기록 입력할 필요가 없게 되기 때문에, 오차 버퍼에 기록 입력하는 빈도를 줄일 수 있다.
도 12는 상술한 원리를 중간 버퍼를 활용하여 실현하고 있는 모양을 개념적으로 나타낸 설명도이다. 도 12 (a)는 화소(P00)로 도트 형성 유무를 판단한 상태를 나타내고 있다. 도 12 (a)의 오른쪽에 나타낸 4개의 직사각형은 각각 중간 버퍼로서의 레지스터를 모식적으로 나타낸 것이다. 이하에서는 각 레지스터에 Rl, R2, R3, R4로 부호를 붙여 식별한다. 착안 화소(P00)에서 발생한 계조 오차(E00)는 오차확산 매트릭스에 설정된 오차확산계수가 곱셈되어 각 레지스터에 확산된다. 한편, 도시(圖示)가 번잡화하는 것을 피하기 위해서, 도 12에서는 화소(P00)로부터 왼쪽 아래의 화소로 확산되는 오차를 E00_LD로 생략하여 표시한다. 오차(E00_LD)의 값은 화소(P00)의 계조 오차(E00)에 오차확산계수(K1-1)를 곱셈함으로써 구할 수 있다. 마찬가지로, 화소(PO0)에서 바로 아래의 화소로 확산되는 오차를 E00_D로 생략하여 표시하고, 화소(P00)에서 오른쪽 아래의 화소로 확산되는 오차를 E00_RD로, 화소(P00)에서 오른쪽 옆의 화소로 확산되는 오차를 E00_R로 생략하여 표시하는 것으로 한다. 다른 화소에서 발생한 계조 오차에 관해서도 마찬가지로, 예컨대, 화소(PO1)에서 왼쪽 아래의 화소로 확산되는 오차는 E01_LD로 생략하여 표시하고, 화소(P01)에서 바로 아래의 화소로 확산되는 오차는 E01_D로, 오른쪽 아래의 화소로 확산되는 오차는 E01_RD로, 오른쪽 옆의 화소로 확산되는 오차는 E01_R로 각각 생략하여 표시한다. 또한, 각 레지스터의 오른쪽에 붙인 별표는 소정 화소수의 오차를 축적하고 끝난 레지스터를 나타내고 있다. 별표가 의미하는 내용에 관해서는 후술한다.
도 12 (a)를 참조하여, 착안 화소(P00)에서 생긴 계조 오차(E00)가 레지스터
(R1) 내지 레지스터(R4)의 4개의 레지스터에 축적되는 모양을 설명한다. 4개의 레지스터 중, 레지스터(R1)는 착안 화소로부터 오른쪽 옆의 화소로 확산되는 오차가 오버라이팅되는 레지스터이다. 다른 3개의 레지스터와는 달리, 항상 착안 화소의 오른쪽 옆의 화소로의 오차가 오버라이팅된다. 도 12 (a)에서 레지스터(R1)에는 착안 화소(P00)에서 오른쪽 옆의 화소(P01)로 확산되는 오차(E00_R)의 값이 오버라이팅되어 있다. 다른 3개의 레지스터에는 착안 화소로부터 왼쪽 아래, 바로 아래, 오른쪽 아래의 각 화소로 확산되는 각각의 오차가 덧셈된다. 어느 쪽의 레지스터에 어느 쪽의 오차가 덧셈될지는 이하에 설명하는 바와 같이 착안 화소의 이동에 따라 순번으로 배열되어 간다.
우선, 착안 화소가 화소(P00)에 있는 경우(도 12 (a)참조)에 레지스터(R2)에는 착안 화소로부터 화소(P10)로의 오차(착안 화소에서 바로 아래의 화소로 확산되는 오차)가 덧셈된다. 레지스터(R3)에는 착안 화소에서 화소(P1-1)로의 오차(착안 화소에서 왼쪽 아래의 화소로 확산되는 오차)가 덧셈된다. 레지스터(R4)에는 착안 화소에서 화소(P11)로의 오차(착안 화소에서 오른쪽 아래의 화소로 확산되는 오차)가 덧셈된다.
다음에, 착안 화소가 화소(PO1)로 이동한 경우를 생각한다(도 12 (b)참조). 착안 화소가 이동해도, 레지스터(R2)에는 여전히 화소(P10)로의 오차가 덧셈된다.착안 화소의 이동후 화소(P10)는 착안 화소의 왼쪽 아래의 화소로 되어 있으므로, 착안 화소와의 위치관계로 말하면, 레지스터(R2)에는 착안 화소에서 왼쪽 아래의 화소로의 오차가 덧셈되는 것으로 된다. 바꾸어 말하면, 착안 화소가 화소(PO0)에 있을 때 레지스터(R2)에는 착안 화소에서 바로 아래의 화소로의 오차가 덧셈된 데 대해, 착안 화소가 화소(PO1)로 이동하면, 착안 화소에서 왼쪽 아래의 화소로의 오차가 덧셈되는 것으로 된다.
마찬가지로, 레지스터(R4)에는 화소(P11)로의 오차가 덧셈되기 때문에, 착안 화소가 화소(PO0)에 있을 때에는 착안 화소에서 오른쪽 아래의 화소로의 오차가 덧셈되지만, 착안 화소가 화소(PO1)로 이동하면, 착안 화소에서 바로 아래의 화소로의 오차가 덧셈되는 것으로 된다.
레지스터(R3)에 관해서는 착안 화소가 화소(P00)에 있을 때 착안 화소의 왼쪽 아래의 화소(P1-1)로의 오차를 덧셈했지만, 착안 화소가 화소(PO1)로 이동한 후 이미 화소(P1-1)로의 오차의 확산은 불필요하다. 그래서, 레지스터(R3)에는 새로운 착안 화소(P02)에서 화소(P12)로의 오차를 덧셈한다. 결국 레지스터(R3)에 관해서도 다른 레지스터와 마찬가지로, 착안 화소가 이동하면, 착안 화소에서 보아 다른 방향으로의 오차가 덧셈되는 것으로 된다. 즉, 착안 화소가 화소(PO0)에 있을 때, 레지스터(R3)에는 착안 화소에서 왼쪽 아래의 화소로의 오차가 덧셈되지만, 착안 화소가 화소(PO1)로 이동하면, 착안 화소에서 오른쪽 아래의 화소로의 오차가 덧셈되는 것으로 된다.
다시 진행하여, 착안 화소가 화소(P01)에서 화소(P02)로 이동한 경우에도 마찬가지로, 레지스터(R2) 내지 레지스터(R4)의 3개의 레지스터에는 착안 화소의 이동에 따라, 착안 화소에서 보아 다른 방향에 있는 화소로의 오차가 덧셈되는 것으로 된다. 도 12 (c)는 착안 화소가 화소(P02)로 이동했을 때 착안 화소(P02)에서 각 레지스터로 오차가 확산되어 있는 모양을 나타내고 있다. 상술한 도 12 (b)와 도 12 (c)를 비교하면 분명한 바와 같이, 착안 화소가 화소(PO1)에 있을 때 레지스터(R2), 레지스터(R3), 레지스터(R4)의 각 레지스터에는 착안 화소에서 왼쪽 아래의 화소, 오른쪽 아래의 화소, 바로 아래의 화소로의 오차가 덧셈되지만, 착안 화소가 화소(P02)에서 화소(P03)로 이동하면, 각 레지스터에는 각각 착안 화소에서 오른쪽 아래의 화소, 바로 아래의 화소, 왼쪽 아래의 화소로의 오차가 덧셈되는 것으로 된다.
이와 같이, 제2 실시예의 계조수 변환처리에서는 착안 화소에서 오른쪽 아래의 화소, 바로 아래의 화소, 왼쪽 아래의 화소로의 오차가, 레지스터(R2) 내지 레지스터(R4)의 3개의 레지스터에 덧셈되지만, 각각의 오차가 어느 쪽의 레지스터에 덧셈될지는 착안 화소의 이동에 따라 순번으로 배열되어 간다. 이렇게 해서 착안 화소를 이동시키면서, 각 레지스터를 각각 적절한 타이밍으로 리세트하면서, 순번으로 오차를 덧셈해 가면, 이하에 설명한 바와 같이, 연속되는 3개의 착안 화소에서의 오차가 각 레지스터에 순번으로 축적되는 것으로 된다. 이하, 레지스터(R4)를 예로 들어 구체적으로 설명한다.
착안 화소가 화소(P00)에 있는 경우 도 12 (a)에 나타내는 바와 같이 레지스터(R4)에는 착안 화소(P00)에서 오른쪽 아래의 화소로의 오차(E00_RD)가 덧셈된다.후술하는 바와 같이, 오차(E00_RD)를 덧셈하는 시점에서 레지스터(R4)는 이미 리세트되어 있기 때문에, 기억되어 있는 오차는 없다. 착안 화소가 화소(P01)로 이동하면, 도 12 (b)에 나타내는 바와 같이, 레지스터(R4)에는 착안 화소(P01)에서 바로 아래의 화소로의 오차(E01_D)가 덧셈된다. 레지스터(R4)에는 먼저의 착안 화소(P00)에서의 오차(E00_RD)가 이미 덧셈되어 있으므로, 이 오차에 가하여, 착안 화소(P01)에서의 오차(E01_D)가 덧셈되는 것으로 된다. 착안 화소가 화소(P02)로 이동하면, 도 12 (c)에 나타내는 바와 같이, 레지스터(R4)에는 착안 화소(P02)에서 왼쪽 아래의 화소로의 오차(E02_LD)가 덧셈된다. 레지스터(R4)에는 먼저의 착안 화소(P 00및 P01)에서의, 각각의 오차(E00_RD) 및 오차(E01_D)가 이미 덧셈되어 있으므로, 이들의 오차에 가하여 착안 화소(P02)에서의 오차(E02_LD)가 덧셈되는 것으로 된다. 그 결과, 착안 화소(P02)로부터의 오차를 덧셈한 시점에서 레지스터(R4)에는 착안 화소(P00) 내지 착안 화소(P02)의 연속되는 3개의 착안 화소에서의 오차가 축적되는 것으로 된다. 도 12 (c)에서, 레지스터(R4)의 오른쪽 옆에 나타내진 별표는 연속되는 3개의 착안 화소 중의 최후의 착안 화소에서의 오차가, 레지스터(
R4)에 축적되는 것을 나타내고 있다. 이렇게 해서, 연속되는 3개의 화소에서의 오차를 레지스터(R4)에 축적하고 끝나면, 축적된 값을 오차 버퍼에 기록 입력한다.
상술한 설명으로부터 분명한 바와 같이, 레지스터(R4)에는 화소(P11)로 확산되는 오차가 축적되어 있으므로, 레지스터(R4)에 축적된 값은 화소(P11)에 대응하는 오차 버퍼에 기록 입력된다. 도 12 (c)에서, 레지스터(R4)에서 오차 버퍼로 향하는 흰색바탕의 화살표는 레지스터(R4)에 축적한 오차를 오차 버퍼에 기록 입력하는 모양을 모식적으로 나타낸 것이다. 또한, 오차 버퍼와 화소(P11)가 맺는 파선의 화살표는 화소(P11)에 대응하는 오차 버퍼인 것을 모식적으로 나타낸 것이다. 축적된 값을 오차 버퍼에 기록 입력한 후는 레지스터(R4)의 값을 리세트한다. 도 12 (a)의 설명에서, 착안 화소(P00)로부터의 오차를 덧셈하는 시점에서는, 레지스터(R
4)가 이미 리세트되어 있었던 것이, 직전의 착안 화소(P0-1)로부터의 오차를 덧셈한 시점에서 레지스터(R4)에 연속되는 3개의 화소에서의 오차가 축적되고, 레지스터(R4)가 리세트되었기 때문이다.
다음에, 레지스터(R3)에 착안하여 설명한다. 도 12 (a)에 나타내는 바와 같이, 착안 화소(P00)로부터의 오차를 덧셈한 시점에서, 레지스터(R3)에는 연속하는 3개의 착안 화소(P0-2, P0-1, P00)에서의 오차가 축적되어 있다. 레지스터(R3)의 오른쪽 옆에 나타내진 별표는 착안 화소(P00)에서의 오차를 축적하면, 연속되는 3개의 착안 화소에서의 오차가 축적되는 것을 나타내고 있다. 그래서, 착안 화소(PO
0)에서의 오차를 덧셈한 후, 레지스터(R3)에 축적된 값을 오차 버퍼에 기록입력한다. 레지스터(R3)에 축적된 오차는 화소(P1-1)로의 오차이기 때문에, 축적된 오차는, 화소(P1-1)에 대응하는 오차 버퍼에 기록 입력한다. 이렇게 해서, 축적된 오차를 오차 버퍼에 기록 입력하면, 레지스터(R3)의 값을 리세트해 둔다.
여기서, 레지스터(R3)가 리세트되는 타이밍과, 전술의 레지스터(R4)가 리세트되는 타이밍을 비교하면, 레지스터(R4)는 착안 화소(P00)에서의 오차가 덧셈되기 전, 즉 착안 화소(PO-1)로부터의 오차를 덧셈한 후에 리세트 되지만, 레지스터(R3)는 착안 화소(P00)로부터의 오차를 덧셈한 후에 리세트 된다. 따라서, 레지스터(R3
)는 레지스터(R4)에 대해, 착안 화소 1개분 만큼 늦게 리세트 되는 것으로 된다.
도 12 (b)에 나타내는 바와 같이, 착안 화소가 화소(POO)에서 화소(PO1)로 이동하면, 레지스터(R3)에는 그때까지의 화소(P1-1)를 대신하여 새로운 화소(P12)가 할당된다. 화소(P12)는 착안 화소(P01)에 대해 오른쪽 아래으로 위치하는 화소이므로, 레지스터(R3)에는 착안 화소에서 오른쪽 아래의 화소로 확산되는 오차(E0l
_RD)가 덧셈되는 것이 된다. 레지스터(R3)의 값은 먼저 리세트 되어 있기 때문에, 착안 화소(P01)로부터의 오차가 덧셈되는 시점에서 레지스터(R3)에는 덧셈되어 있는 오차가 없다. 착안 화소가 화소(P02)로 이동하면, 도 12 (c)에 나타내는 바와 같이, 레지스터(R3)에는 착안 화소에서 바로 아래의 화소로 확산되는 오차(E02_D)가, 이미 덧셈되어 있는 오차(E01_RD)에 가하여 덧셈된다. 또, 착안 화소가 다음 화소(P03)로 이동한 시점에서, 레지스터(R3)에는 화소(P01) 내지 화소(P03)가 연속되는 3개의 착안 화소에서의 오차가 축적되는 것으로 되고, 레지스터(R3)에 축적된 값이 오차 버퍼에 기록 입력되는 것으로 된다. 상술한 레지스터(R4)에 축적된 오차는 착안 화소(P02)에서의 오차를 덧셈한 후에 오차 버퍼에 기록 입력된 것이지만, 레지스터(R3)에 관해서는 화소 1개분 만큼 늦어져, 착안 화소(P03)에서의 오차를 덧셈한 후에 오차 버퍼에 기록 입력되는 것으로 된다.
레지스터(R2)에 관해서는 레지스터(R3)에 대해, 다시 착안 화소 1개분 만큼 타이밍이 늦는 것으로 된다. 즉, 레지스터(R3)에 관해서는 도 12(a)에 나타내는 바와 같이, 착안 화소(PO0)에서의 오차를 덧셈한 후에, 레지스터에 축적된 값이 오차 버퍼에 기록 입력되어 레지스터가 리세트 되었지만, 레지스터(R2)에 관해서는 착안화소(PO1)에서의 오차를 덧셈한 후에 레지스터에 축적된 값이 오차 버퍼에 기록 입력되어 레지스터가 리세트 되는 것으로 된다.
이와 같이, 레지스터(R2) 내지 레지스터(R4)의 3개의 레지스터에는 착안 화소가 이동할 때마다, 연속되는 3개의 착안 화소에서의 오차가 순번으로 축적되어, 오차 버퍼에 순차 기록 입력되어 간다.
이상, 설명한 바와 같이, 4개의 레지스터 중, 레지스터(R1)는 다음 화소의 도트 형성 유무의 판단에 사용하는 오차를 기억하고, 레지스터(R2) 내지 레지스터(
R4)의 3개의 레지스터는 계조 오차를 순차 축적해 가기 위해서 사용하면, 1화소의 도트 형성 유무를 판단할 때마다, 연속되는 3화소분의 오차의 축적이 종료된 화소이므로, 1화소분씩 오차 버퍼에 기록입력해 갈 수 있다.
C-2. 제2 실시예의 계조수 변환처리:
도 13은 이상으로 설명한 제2 실시예의 계조수 변환처리의 흐름을 나타내는 흐름도이다. 이 처리도 제1 실시예의 계조수 변환처리와 마찬가지로, 컴퓨터(100)의 CPU(102)에 의해 행해진다. 한편, 이하의 설명에서는 잉크의 색 혹은 도트의 크기를 특정하지 않고 설명하지만, 각 색마다 혹은 각종 크기의 도트에 관해 마찬가지의 처리를 행한다. 이하에서는 도 13의 흐름도에 따라, 제1 실시예의 계조수 변환처리의 상위(相違)점을 중심으로, 제2 실시예의 계조수 변환처리에 관해 설명한다.
제2 실시예의 계조수 변환처리를 개시하면, 착안 화소에 관해서의 화상 데이터(Cd)와 확산 오차(Ed)를 RAM(106)으로부터 판독 입력한다(스텝 S400). 계속해서,화상 데이터(Cd)와, 확산 오차(Ed)와, 레지스터(R1)에 기억되어 있는 오차를 덧셈함으로써, 보정 데이터(Cx)를 산출한다(스텝 S402). 보정 데이터(Cx)를 산출하면, 레지스터(R1)는 리세트해 둔다(스텝 S404). 이렇게 해서 얻어진 보정 데이터(Cx)와 소정의 임계값(th)을 비교하여(스텝 S406), 보정 데이터 쪽이 크면 도트를 형성한다고 판단하여, 판단결과를 나타내는 변수(Cr)에 도트를 형성하는 것을 의미하는 값「1」을 기록 입력한다(스텝 S408). 그렇지 않으면 도트를 형성하지 않는다고 판단하여, 변수(Cr)에 도트를 형성하지 않는 것을 의미하는 값「0」을 기록 입력한다
(스텝 S410).
이렇게 해서 도트 형성 유무를 판단하면, 이에 따라 발생하는 계조 오차(E)를 산출한다(스텝 S412). 계조 오차(E)는 제1 실시예와 마찬가지로, 보정 데이터(C
x)에서, 착안 화소에서의 결과값(도트를 형성함으로써, 혹은 도트를 형성하지 않음으로써 착안 화소로 표현되는 계조값)을 뺄셈하는 것으로 구해진다.
이어서, 오차확산 매트릭스에 의해 화소위치마다 정해지는 소정의 오차확산계수와 스텝(S412)으로 구한 계조 오차(E)를 곱셈하고, 화소위치마다 구해진 오차를, 각 레지스터에 덧셈해 간다. 우선, 착안 화소에서 오른쪽 옆의 화소로 확산되는 오차를 레지스터(R1)에 덧셈한다(스텝 S414). 이어서, 레지스터(R2) 내지 레지스터(R4)의 3개의 레지스터에 각각의 오차를 덧셈해 간다. 이들 3개의 레지스터 중에서, 연속하는 착안 화소의 세번째 화소에서의 오차가 덧셈되는 레지스터, 즉 도 12 중에서 별표를 붙여 나타낸 레지스터에는 미리 플래그를 설정해 둔다. 이렇게 해서 플래그가 설정되어 있는 레지스터에는 착안 화소의 왼쪽 아래의 화소로 확산하는 오차를 덧셈한다(스텝 S416). 도 6 (a)의 오차 확산 매트릭스에 나타내진 바와 같이, 착안 화소의 왼쪽 아래의 화소에는 계조 오차(E)와 오차확산계수(K1-1)를 곱셈한 값이 배분된다. 오차를 덧셈하여 가는 3개의 레지스터 중, 플래그가 설정된 레지스터의 1 이전의 레지스터에는 착안 화소의 바로 아래의 화소에 배분해야 할 오차를 덧셈한다(스텝 S418). 착안 화소의 바로 아래의 화소에 배분하는 오차는 계조 오차(E)와 오차확산계수(Kl0)가 곱셈하여 구해진다. 여기서, 플래그가 설정된 레지스터의 1 이전의 레지스터란, 예컨대 도 12 (a)에 나타내는 바와 같이 별표가 레지스터(R3)에 설정되어 있는 경우는 레지스터(R2), 도 12 (b)에 나타내는 바와 같이 별표가 레지스터(R2)에 설정되어 있는 경우는 레지스터(R4)의 레지스터를 가리킨다. 3개의 레지스터 중의 나머지의 레지스터에는 착안 화소의 오른쪽 아래의 화소에 배분해야 할 오차, 즉 계조 오차(E)와 오차확산계수(Kl1)를 곱셈한 값을 덧셈한다(스텝 S420).
이렇게 해서 계조 오차(E)에 소정의 오차확산계수를 곱셈한 값을 각 레지스터에 덧셈하면, 플래그가 세트되어 있는 레지스터에 축적되어 있는 확산 오차를, 착안 화소의 왼쪽 아래의 화소에 대응하는 오차 버퍼에 기록 입력한다(스텝 S422). 예컨대, 도 12 (c)에 나타내는 바와 같이 착안 화소가 화소(P02)에 있는 경우는 화소(P11)에 대응하는 위치의 오차 버퍼에 오차를 기록 입력해 준다. 플래그가 세트된 레지스터(R4)에는 화소(P00)와 화소(P01)와 화소(P02)의 각각의 화소로부터 배분되어 온 오차가 축적되어 있고, 도 5에 나타낸 통상의 오차확산법과 비교하면, 제2 실시예의 처리에서도 실질적으로 동등한 처리가 행해지고 있는 것을 알 수 있다. 이렇게 해서, 축적한 오차를 오차 버퍼에 기록입력하면, 새롭게 배분되어 오는 오차를 축적하기 위해서 레지스터를 리세트해 둔다(스텝 S424).
이상과 같이 하여 1개의 착안 화소에 관해서의 처리를 종료하면, 플래그를 현재의 레지스터의 1 이전의 레지스터에 이동시킨 후(스텝 S426), 모든 화소에 관해서 처리를 종료했는지의 여부를 판단하고(스텝 S428), 미 처리의 화소가 남아 있으면 스텝(S400)으로 되돌아가, 모든 화소에 관해서의 처리가 종료될 때까지 계속되는 일련의 처리를 반복한다. 모든 화소에 관해서의 처리가 종료되면, 제2 실시예의 계조수 변환처리가 빠져, 도 4의 화상 데이터 변환처리로 복귀한다.
한편, 스텝(S414)에서 오차를 레지스터(R1)에 덧셈하는 대신에, 레지스터(R1
)에 오버라이팅 하는 것으로 해도 좋다. 이렇게 하면, 스텝(S404)에서 레지스터(R1
)를 리세트 하는 처리를 생략할 수 있기 때문에 바람직하다. 마찬가지로, 스텝(S42
0)에서, 나머지의 레지스터에 오차를 덧셈하는 처리를 오버라이팅 하는 처리로 변경하면, 스텝(S424)에서 레지스터를 리세트 하는 처리를 생략하는 것이 가능해지기 때문에 바람직하다.
이상, 설명한 제2 실시예의 계조수 변환처리에서는 1개 화소의 도트 형성 유무를 판단할 때마다, 1개 화소의 확산 오차를 오차 버퍼에 기록 입력하는 것만으로 좋다. 따라서, 통상의 오차확산법에 대해, 오차 버퍼로 오차를 확산하기 위한 시간을 크게 단축화할 수 있다. 상술한 바와 같이, 계조수 변환처리에 통상의 오차확산법을 이용한 경우, 오차의 확산에 요하는 시간은 계조수 변환처리에 요하는 시간 중에서 비교적 큰 비율을 차지하고 있다. 이것으로부터, 제2 실시예의 계조수 변환처리를 채용하면 처리시간이 단축화 되고, 나아가서는 화상을 신속하게 인쇄하는 것이 가능해진다.
한편, 상술한 제1 실시예의 계조수 변환방법을 이용한 경우라도, 오차를 확산하기 위해서 요하는 시간을 단축화할 수 있지만, 제2 실시예의 방법을 채용하면, 오차의 확산시간을 더욱 효율 좋게 단축화할 수 있다. 즉, 통상의 오차확산법과 비교한 경우, 상술한 제1 실시예의 방법을 사용한 경우, 1회의 도트 형성 판단 정도에서는 2.5화소분의 빈도로 오차를 오차 버퍼에 덧셈하는 만큼으로 충분해 있었지만, 제2 실시예의 방법을 사용하면, 1회의 도트 형성 판단 정도로 오차를 기록 입력하는 빈도를 1화소분에 까지 감소시킬 수 있다. 또한, 도 7에 나타낸 제1 실시예의 경우에서는 중간 버퍼로서 6개의 레지스터를 사용하였지만, 제2 실시예의 방법의 경우는 4개의 레지스터를 사용하고 있을 만큼이고, 그 정도만큼 CPU(102)의 레지스터를 다른 목적으로 사용하는 것이 가능하게 된다.
C-3. 변형예:
상술한 제2 실시예의 계조수 변환처리에서는 착안 화소에서 발생한 오차를 4개의 레지스터에 축적하고 있지만, 이 중 레지스터(R1)와, 다른 3개의 레지스터(R2
) 내지 레지스터(R4)에서는 레지스터의 사용방법이 약간 다르다. 즉, 레지스터( R1)에 관해서는 착안 화소의 오른쪽 옆의 화소에 배분해야 할 오차가 항상 오버라이팅되지만, 다른 3개의 레지스터에 관해서는 착안 화소에 대한 상대위치는 일정하지 않고, 착안 화소가 이동할 때마다 이동하고 있었다.
이에 대해, 도 14에 나타내는 바와 같이, 각 레지스터가 대응하는 화소위치를 착안 화소에 대해 고정하는 것으로 해도 좋다. 즉, 예컨대, 레지스터(R1)에는 착안 화소의 오른쪽 옆의 화소에 배분해야 할 오차가 항상 오버라이팅 되고, 레지스터(R2)에는 착안 화소의 오른쪽 아래의 화소에 배분해야 할 오차가, 레지스터(R3
)에는 착안 화소의 바로 아래의 화소에 배분해야 할 오차가, 레지스터(R4)에는 착안 화소의 왼쪽 아래의 화소에 배분해야 할 화소가 항상 덧셈되도록 해도 좋다. 이와 같이, 각 레지스터와 착안 화소의 위치관계를 고정한 뒤에, 후술하는 바와 같이, 착안 화소의 이동에 합쳐서 각 레지스터에 축적되어 있는 오차를 순차 이웃의 레지스터로 옮겨 바꿔 가는 것이다. 이렇게 하면, 항상 같은 레지스터에 축적되어 있는 오차를 오차 버퍼에 기록입력이 좋기 때문에, 레지스터에서 오차 버퍼에 확산 오차를 기록 입력하는 처리를 간소화할 수 있다. 또한, 각 레지스터로 사용되는 오차확산계수도 항상 같은 값이 되기 때문에, 착안 화소에서 발생한 계조 오차에서 각 레지스터에 덧셈하는 오차를 산출하는 처리도 간소화하는 것이 가능해진다.
이하, 이와 같은 제2 실시예의 변형예에서의 계조수 변환처리에 관해, 도 15를 참조하면서 간단히 설명한다. 도 15 (a)는 착안 화소(P00)에 관해서의 도트 형성 유무를 판단한 상태를 나타내고 있다. 도면의 오른쪽에 나타내고 있는 4개의 직사각형은 각 레지스터를 모식적으로 나타낸 것이다. 레지스터(R1)에는 항상 착안 화소의 오른쪽의 화소에 배분해야 할 오차가 오버라이팅 된다. 또한, 레지스터(R2)에는 항상 착안 화소의 오른쪽 아래의 화소에 배분해야 할 오차가 덧셈되고, 레지스터(R3)에는 착안 화소의 바로 아래의 화소에 배분해야 할 오차가, 레지스터(R4)에는 착안 화소의 왼쪽 아래의 화소에 배분해야 할 오차가 덧셈된다.
이와 같이, 각 레지스터에는, 착안 화소에 대해 항상 같은 위치의 화소에 배분해야 할 오차가 덧셈되기 때문에, 각각의 오차확산계수는 항상 같은 값이 된다. 즉, 레지스터(R1)의 오차확산계수는 항상 착안 화소의 오른쪽 화소로의 오차확산계수(K01)이고, 레지스터(R2)의 오차확산계수는 항상 착안 화소의 오른쪽 아래의 화소로의 오차확산계수(K11)이다.(도 6참조). 마찬가지로, 레지스터(R3)의 오차 확산계수는 항상 K10이고, 레지스터(R4)의 오차확산계수는 항상 K1-1이 된다. 이렇게 해서, 각 레지스터의 오차확산계수가 항상 같은 값이 되기 때문에, 착안 화소에서 발생한 계조 오차이므로, 각 레지스터에 덧셈해야 할 오차의 산출을 용이하게 행할 수 있다.
착안 화소에서 발생한 계조 오차(E00)를 각 레지스터에 덧셈하면, 레지스터(
R4)에 축적되어 있는 오차의 값을 오차 버퍼에 기록 입력하는 처리를 행함과 동시에, 각 레지스터에 축적되어 있는 값을 1개씩 이웃의 레지스터에 시프트시킨다. 즉, 레지스터(R3)의 값을 레지스터(R4)로 이동시켜, 레지스터(R2)의 값을 레지스터
(R3)로 이동시킨다(도 15 (a)의 아래쪽을 참조).
이상의 처리를 종료하면, 이어서 착안 화소를 화소(PO1)로 옮겨, 다시 같은 처리를 행한다. 착안 화소(P01)에서 발생한 계조 오차(E01)를 소정의 오차확산계수를 걸어 각각의 레지스터에 덧셈하면, 레지스터(R4)에 축적되어 있는 값을 오차 버퍼에 기록 입력하는 처리를 행한다. 먼저, 각 레지스터에 기억되어 있는 값을 1개씩 시프트하는 처리를 행하고 있기 때문에, 도 15 (b)에 나타내는 바와 같이 각 레지스터에 오차를 덧셈하는 처리가 종료된 시점에서 레지스터(R4)에는 항상 3개의화소로부터의 오차가 축적되어 있는 것으로 된다. 따라서, 제2 실시예의 변형예에서는 항상 같은 레지스터에 축적되어 있는 오차를 오차 버퍼에 기록 입력해 주면 좋다. 이 때문에, 레지스터에서 오차 버퍼에 확산 오차를 기록 입력하는 처리를 간소화할 수 있다. 한편, 도 15에 나타낸 처리에서는, 각 레지스터에 축적되어 있는 오차를 이웃의 레지스터로 시프트시키는 처리가 새롭게 가해지지만, 이러한 레지스터 사이에서 값을 이동시키는 처리는 매우 신속하게 행할 수 있기 때문에, 그것에 의한 처리시간의 증가는 작은 것이다.
상술한 제2 실시예의 계조수 변환처리 혹은 제2 실시예의 변형예의 계조수 변환처리에서는 설명이 번잡하게 되는 것을 피하기 위해서, 어느 것이나 오차확산 매트릭스는 오차의 확산범위가 가장 좁은 도 6 (a)의 매트릭스를 사용하는 것으로 하여 설명했다. 그렇기는 하지만, 사용하는 오차확산 매트릭스는 도 6 (a)의 매트릭스에 한정되는 일없이, 다른 매트릭스를 사용해도 좋은 것은 물론 이다. 또한, 제1 실시예에서의 경우와 마찬가지로, 캐쉬메모리를 활용함으로써, 실질적으로 마찬가지의 처리를 해도 좋은 것은 물론이다.
또한, 제2 실시예의 계조수 변환방법에서도, 주변의 화소로 확산해야 할 중간적인 확산 오차를 레지스터에 덧셈해 두는 것은 아니고, 계조 오차 그 자체를 중간 버퍼에 기억해 두고, 새로운 계조 오차를 기억할 때마다, 오차 버퍼에 기록 입력해야 항 최종적인 확산 오차를 산출하도록 해도 좋다. 이러한 방법은 레지스터에 기억되는 값이 축적중의 확산 오차인지, 계조 오차인지 차이가 있지만, 오차 버퍼에 기록 입력되는 오차는 같은 값이 되기 때문에, 실질적으로 동등한 처리를 할 수있다.
D. 제3 실시예:
이상으로 설명한 각 실시예에서는 항상 같은 오차확산 매트릭스를 사용하여 오차를 확산하는 것으로 하여 설명했지만, 현실의 계조수 변환처리에서는 화질상의 요청이므로, 도 6 (a)와 같은 확산범위가 좁은 오차확산 매트릭스와, 도 6 (c)와 같은 확산범위가 넓은 매트릭스를 바꾸어 사용하는 경우가 있다.
즉, 오차확산법에서는 도트가 특정한 주기적인 패턴으로 형성되는 것을 막기 위해서, 복수 종류의 오차확산 매트릭스를 랜덤으로 바꾸면서 사용하는 일이 있다. 또한, 특개평 7-226841호에는 화상 데이터의 계조값이 충분히 작은 소정의 임계값보다도 작고, 또한 도트를 형성한다고 판단되어 있는 경우에, 확산범위가 넓은 오차 확산 매트릭스를 이용하여 오차를 확산시킴으로써, 도트밀도가 드문드문한 영역에서의, 도트의 분산성을 개선하는 기술이 개시되어 있다. 이렇게 하는 것으로, 도트의 분산성을 개선 가능한 이유에 관해서는 설명을 생략하지만, 여기서는 특개평 7-226841호에 개시된 기술에 따라, 화상 데이터의 계조값이 충분히 작은 소정의 임계값(thm)보다도 작고, 또한 도트를 형성한다고 판단되어 있는 경우에는 도 6 (c)에 나타낸 오차확산범위가 넓은 매트릭스를 사용하고, 그 이외의 경우에는 도 6 (a)에 나타낸 오차확산범위가 좁은 매트릭스를 사용하는 것으로 한다. 이러한 경우에, 이하에 설명하는 제3실시예의 방법을 사용하면, 계조수 변환처리에 요하는 시간을 효과적으로 단축화 하는 것이 가능해진다.
도 16은 2개의 오차확산 매트릭스를 바꾸면서 계조수 변환처리를 행하는 처리의 흐름을 나타낸 흐름도이다. 이하, 도 16의 흐름도에 따라, 제3 실시예의 계조수 변환처리에 관해 설명한다. 한편, 상술한 각 실시예의 계조수 변환처리와 마찬가지로 설명이 번잡화하는 것을 피하기 위해서, 도트의 색이나 도트의 크기를 구별하지 않고 설명하지만, 이하의 처리는 각 색 잉크마다, 혹은 각종 크기의 도트마다 행해진다.
제3 실시예의 계조수 변환처리를 개시하면, 우선 처음에 착안 화소의 화상 데이터(Cd)와 확산오차(Ed)를 판독 입력한다(스텝 S500). 화상 데이터(Cd)와 확산오차(Ed)는 RAM(l06)에 기억되어 있다. 레지스터(R1)에 기억되어 있는 왼쪽 옆의 화소로부터의 오차와, 화상 데이터(Cd) 및 확산오차(Ed)를 덧셈하여 보정 데이터(C
x)를 산출한다(스텝 S502). 구한 보정 데이터(Cx)와 소정의 임계값(th)을 비교하여
(스텝 S504), 보정 데이터(Cx)쪽이 클수록 착안 화소에 도트를 형성한다고 판단하고(스텝 S504:yes), 도트 형성 판단의 결과를 나타내는 변수(Cr)에 도트를 형성하는 것을 의미하는 값「1」을 기록 입력한 후(스텝 S506), 도트를 형성함으로써 착안 화소에 생기는 계조 오차를 산출한다(스텝 S508). 보정 데이터(Cx)가 소정의 임계값(th)보다도 작으면(스텝 S504:no), 변수(Cr)에 도트를 형성하지 않는 것을 의미하는 값「0」을 기록 입력하여(스텝 S510), 그것에 의해 착안화소에 생기는 계조 오차를 산출한다(스텝 S512).
착안 화소에 도트를 형성하고 있는 경우에는 착안화소의 화상 데이터(Cd)와 오차확산 매트릭스를 바꾸기 위한 소정의 임계값(thm)을 비교한다(스텝 S514). 화상 데이터(Cd)가 임계값(thm)보다도 작은 경우는(스텝 S514:no), 작은 화상 데이터의 영역에 가끔 도트가 형성된 것으로 생각되기 때문에, 오차확산범위가 넓은 오차확산 매트릭스(여기서는, 도 6 (c)에 나타낸 매트릭스)에 따라, 각각의 오차확산계수를 설정한다(스텝 S516). 즉 도 6 (c)에 나타내는 바와 같이, 착안 화소의 바로 아래의 화소의 오차확산계수(K10)에는 1/4을 설정하고, 착안 화소의 오른쪽 옆의 화소, 오른쪽 아래의 화소, 및 왼쪽 아래의 화소의 각각의 오차확산계수(K01, K11, K1-1)에는 1/8을 설정한다. 착안 화소로부터 더욱 멀리 있는 화소의 오차확산계수(
K02, K03, K12, K13, K1-2, K1-3)에는 1/16을 설정한다.
이어서, 착안 화소로부터 원방(遠方)에 있는 6개의 화소에 관해서는 계조 오차와 각 화소의 오차확산계수를 곱셈한 값을 각각의 오차 버퍼에 직접 덧셈한다(스텝 S518). 이것을 도 17을 이용하여 설명한다. 도 17은 착안 화소(P00)에 관해 도트 형성 유무를 판단하고, 그 결과 계조 오차(E00)가 발생된 상태를 나타내고 있다. 이 계조오차(E00)는 도 6 (c)에 나타내는 오차 확산 매트릭스를 이용하여 넓은 범위로 확산한다. 즉, 통상은 도 17 중에 굵은 파선으로 둘러싼 4개의 화소로 오차를 확산시키지만, 화소(P00)의 계조오차(E00)는 파선의 바깥쪽에 있는 화소(P02), 화소 (P03), 화소(P12), 화소(P13), 화소(P1-2), 및 화소(P1-3)의 6개의 화소에도 오차를 확산시킨다. 스텝(S518)의 처리에서는 이들 6개의 화소에 관해, 계조 오차(E00)와 각각의 화소의 오차확산계수를 곱셈한 값을 각 화소의 오차 버퍼에 직접 덧셈하는 것이다.
원방의 화소의 오차 버퍼에 오차를 덧셈하면, 파선의 안쪽에 있는 각 화소의 레지스터로 오차를 확산한다(스텝 S522). 즉, 제3 실시예의 계조수 변환처리에서착안 화소가 원방의 화소에 관해서는 오차 버퍼에 직접오차를 덧셈하지만, 착안 화소 주변의 각 화소에 관해서는 상술한 제1 실시예 혹은 제2 실시예와 같이 중간 버퍼를 이용하여 오차를 확산하는 것이다. 이하에서는 제2 실시예의 변형예의 방법에 준하여 오차를 확산하는 경우, 즉 각 레지스터에는 착안 화소에 대해 항상 같은 위치관계에 있는 화소로의 오차가 덧셈되는 경우를 예로 들어 설명한다.
우선, 착안 화소의 오른쪽의 화소로의 오차확산계수(K01)와 계조 오차(E00)를 곱셈한 값으로, 레지스터(R1)의 값을 갱신한다. 다음에, 오차확산계수(K11)와 계조 오차(E00)를 곱셈한 값을 레지스터(R2)에 덧셈하고, 오차확산계수(K01)와 계조 오차(E00)를 곱셈한 값을 레지스터(R3)에 덧셈하며, 오차확산계수(K1-1)와 계조 오차(E00)를 곱셈한 값을 레지스터(R4)에 덧셈한다(도 15 (a)를 참조). 스텝(S522)에서는 이상의 처리를 행한다. 계속해서, 레지스터(R4)에 축적되어 있는 값을 대응하는 화소의 오차 버퍼에 덧셈하는 처리를 행한다(스텝 S524). 도 17에 나타내는 바와 같이, 여기서 착안화소는 화소(PO0)이므로, 화소(P1-1)의 오차 버퍼에 레지스터(R4)의 값을 덧셈하면 좋다. 오차버퍼에 덧셈하는 처리가 종료되면, 레지스터(R3
)에 축적되어 있는 값을 레지스터(R4)로, 레지스터(R2)에 축적되어 있는 값을 레지스터(R3)로 시프트 시킨다(스텝 S526). 각 레지스터의 값을 시프트 하는 처리를 한 후, 레지스터(R2)값을 리세트해 둔다.(스텝 S528).
한편, 착안 화소에 도트를 형성하고 있지 않는 경우(스텝 S504:no), 혹은 착안 화소에 도트를 형성하고 있어도 화상 데이터(Cd)가 소정의 임계값(thm)보다 큰 경우(스텝 S514:yes)에는 오차확산범위가 좁은 쪽의 매트릭스(여기서는 도 6 (a)에나타낸 매트릭스)에 따라, 각각의 오차확산계수를 설정한다(스텝 S520). 즉 도 6 (a)의 오차확산 매트릭스에 따라, 착안화소 주변의 4개의 화소의 오차확산계수에 1/4를 설정한다. 이렇게 해서 설정된 오차확산계수를 이용하여, 상술한 스텝(S522) 내지 스텝(S528)의 처리를 행함으로써, 레지스터(R4)에 축적된 오차가 오차 버퍼에 덧셈된다.
이상과 같이 하여 착안화소의 도트 형성 유무를 판단하고, 1화소에 관해서의 확산오차를 오차 버퍼에 기록 입력한다면, 모든 화소에 관해 처리를 종료했는지의 여부를 판단한다(스텝 S530). 미 처리의 화소가 남아 있는 경우는 다시 스텝(S500)으로 되돌아가, 새로운 착안화소에 관해서의 화상 데이터와 확산 오차를 RAM(l06)으로부터 판독 입력하고, 이들의 값과 레지스터(R1)에 기억되어 있는 오차를 이용하여 보정 데이터(Cx)를 산출한다(스텝 S502). 이후, 미 처리의 화소가 없어질 때까지 이상과 같은 일련의 처리를 반복하고, 모든 화소에 관해 처리를 종료하면, 제3 실시예의 계조수 변환처리가 빠져 도 4에 나타내는 화상 데이터 변환처리로 복귀한다.
상술한 제3 실시예의 방법을 이용하여 계조수 변환처리를 행하면, 확산범위가 넓은 오차확산 매트릭스와, 확산 범위가 좁은 오차확산 매트릭스를 바꾸면서 계조수 변환처리를 행하는 경우에, 처리시간을 효율 좋게 단축화할 수 있다. 즉, 도 6 (c)에 나타낸 확산 범위가 넓은 오차 확산 매트릭스를 사용하는 경우, 모든 오차를 레지스터에 축적하고자 하면, 다수의 레지스터가 필요해진다. 도 17을 참조하여 설명하면, 파선으로 둘러싼 범위의 안쪽에 있는 4화소분의 레지스터와, 파선의 바깥쪽의 6화소분의 레지스터를 가한 10화소분의 레지스터를 사용한다. 이들 레지스터에 오차를 덧셈하기 위해서, 플래그를 사용하는 제2 실시예의 방법을 이용하든, 레지스터의 값을 시프트시키는 제2 실시예의 변형예의 방법을 이용하든 레지스터의 수가 너무 많아지면, 레지스터의 조작에 시간이 필요해져, 전체로서의 처리시간을 증가시킨다.
이에 대해, 상술한 제3 실시예의 방법을 이용하면, 가령 매우 넓은 범위로 오차를 확산하는 매트릭스를 이용한 경우라도, 오차를 덧셈하는 레지스터의 수를 증가시키지 않고 계조수 변환처리를 행할 수 있기 때문에, 전체로서 처리가 간소화되어, 처리시간이 증가하는 것을 회피하는 것이 가능해진다.
특히, 상술한 바와 같이 확산범위가 넓은 오차확산 매트릭스는 화상 데이터의 계조값이 충분히 작고, 또한 도트를 형성한다고 판단된 경우에 사용된다. 화상 데이터의 계조값이 충분히 작으면, 도트를 형성한다고 판단되는 확률은 작은 것으로, 확산범위가 넓은 오차 확산 매트릭스는 사용빈도가 낮은 매트릭스이라고 말할 수 있다. 따라서, 극히 드물게 넓은 범위로 오차를 확산하지 않으면 안되는 경우에는, 다소 시간이 걸리더라도 오차 버퍼에 직접 오차를 덧셈하는 것으로 하고, 그 정도 넓은 범위로 확산시킬 필요가 없는 통상의 경우는 중간 버퍼를 활용하여 신속하게 오차를 확산시키는 것으로, 전체로서 계조수 변환처리를 신속하게 행할 수 있다. 또한, 넓은 범위로 확산하는 경우에는 원방의 화소의 오차 버퍼에는 직접 오차를 덧셈하는 것으로 하면, 그 만큼 중간 버퍼로서 사용하는 레지스터의 수를 절약할 수 있고, 떠 있는 레지스터를 다른 처리에 사용하는 것으로, 더욱 처리를 효율화하는 것이 가능해진다.
더구나, 상술한 제3 실시예에서는 오차 확산 매트릭스를 바꾸는 것으로 하고, 확산 범위가 넓은 오차 확산 매트릭스가 선택되어 있는 경우에만, 원방 화소의 직접 오차를 확산시키는 것으로 했지만, 반드시 매트릭스의 교체를 행하는 경우에 한정되는 것이 아니다. 예컨대, 사용하는 오차확산 매트릭스가 확산범위가 넓은 매트릭스인 경우에, 원방의 화소에는 직접 오차를 확산하여 기억시키고, 근방의 화소에는 중간 버퍼를 활용함으로써, 소정 화소수의 계조 오차에 의거, 정리하여 오차를 확산시키도록 해도 좋다. 이렇게 하면, 정리하여 오차를 확산하여 기억시키기 위해서 필요한 중간 버퍼를 절약하는 것이 가능해진다.
또한, 이상으로 설명한 제3 실시예에서도, 중간 버퍼를 활용함으로써, 소정 화소수의 계조 오차이므로, 주변화소로 확산 오차를 정리해서 확산하여 기억시키기 위한 방법에는 제1 실시예 내지 제2 실시예에서 설명한 각종 방법을 썩 알맞게 적용 가능한 것은 말할 필요도 없다.
E. 제4 실시예:
상술한 각종 실시예의 방법은 최종적으로 계조오차를 주변화소의 오차 버퍼로 배분하고 있다. 이 의미에서는 소위 오차확산법이라고 하는 방법에으로 유사한 수법이라고 생각할 수 있다. 물론, 소위 평균오차 최소법이라고 하는 방법과 같이, 도트 형성 유무의 판단에 의해 발생한 계조 오차를 착안 화소에 기억해 두고, 미 판단 화소의 도트 형성 유무의 판단에 있어서는, 주변 화소로부터 계조 오차를 판독출력하여 도트 형성 판단을 행하는 경우에도, 중간 버퍼를 활용하는 것으로 도트형성판단에 요하는 시간을 단축화 하는 것이 가능하다. 이하에서는 이와 같은 방법을 이용하여 계조수 변환처리를 행하는 제4 실시예에 관해 설명한다.
E-1. 제4 실시예에서 계조수변환처리의 시간을 단축화하는 원리:
도 18은 제4 실시예의 방법에서, 중간 버퍼를 활용함으로써 도트 형성 유무의 판단에 요하는 시간을 단축화하는 원리를 나타내는 설명도이다. 도 18 (a)는 착안 화소(P00)에 관해 도트 형성 유무를 판단하고 있는 모양을 나타내고 있다. 제4 실시예의 방법을 설명하는 준비로서, 소위 평균오차 최소법이라고 하는 방법을 도 18 (a)을 유용하여 간단하게 설명해 둔다.
평균오차 최소법에서는, 도트 형성 유무의 판단에 의해 생긴 계조 오차를, 그 화소에 대응하는 오차 버퍼에 기억해 둔다. 이것을 도 18 (a)에 의거하여 설명하면, 왼쪽의 도면 중에 예컨대「E0-1」로 있는 것은 화소(P0-1)에서 발생한 계조오차를 나타내고 있고, 화소(P0-1)의 범위 내에 E0-1로 표시함으로써, 계조 오차(E0-1)가 화소(P0-1)의 오차 버퍼에 기억되어 있는 것을 모식적으로 나타내고 있다. 또한, 도면 중에 사선이 붙여져 있는 것은 도트 형성 판단 필인 것을 나타내고 있다. 도시되어 있는 바와 같이, 평균오차 최소법에서는 도트 형성 유무의 판단 필의 화소에 각각의 계조 오차가 기억되어 있다. 미 판단의 착안 화소(PO0)에 관서 도트 형성 유무를 판단하는 경우에는 주변의 판단 필의 화소로부터 각각의 계조 오차를 판독출력하여, 이들의 오차를 고려하면서 착안 화소(PO0)의 도트 형성 유무를 판단한다. 보다 상세하게는 도 19에 몇 개인가 예시되어 있는 바와 같이, 주변화소의 착안 화소에 대한 상대위치에 따라 소정의 중량 계수가 미리 정해지고 있고, 주변의 각 화소에서 판독출력된 오차에 소정의 중량 계수를 잰 값으로, 착안화소의 화상 데이터를 보정함으로써 보정 데이터를 산출한다. 또, 도 19에서는 사선이 붙어 있는 화소가 착안 화소이고, 각 화소에 표시되어 있는 수치가 그 화소에 설정되어 있는 중량 계수이다. 이렇게 해서 구한 보정 데이터와 소정의 임계값을 비교함으로써, 착안화소에 관해서의 도트형성유무를 판단한다. 착안화소에 관해 도트 형성 유무를 판단하면, 그것에서 생기는 계조 오차를 산출하고, 산출한 계조오차를 착안화소의 오차 버퍼에 기억한다. 평균오차 최소법에서는, 이상과 같은 처리를 반복함으로써, 화소마다 도트의 형성유무의 판단을 행한다.
상술한 바와 같이, 평균오차 최소법을 이용하여 도트 형성 유무를 판단하기 위해서는 1개의 화소에 관해서의 판단을 행할 때마다, 오차 버퍼로부터 복수 화소의 계조 오차를 판독출력하지 않으면 안되고, 도트 형성 유무를 판단하기 위해서 어느 정도의 시간이 필요해진다.
이에 대해, 이하에 설명하는 제4 실시예의 계조수 변환처리에서는 수학적으로는 상술한 평균오차 최소법과 등가인 처리를 행하면서도, 중간 버퍼를 활용함으로써, 도트형성의 유무를 신속하게 판단하는 것이 가능해지고 있다. 이하, 도 18을 참조하면서, 상술한 평균오차 최소법과 대비함으로써, 제4 실시예의 계조수 변환처리에서 처리시간을 단축화하는 원리에 관해 설명한다. 한편, 설명의 번잡화를 피하기 위해서, 이하에서는 도 19 (a)에 나타낸 중량 계수의 설정에 따라, 주변화소의 계조오차를 고려하는 것으로 한다.
도 18 (a)는 제4 실시예의 계조수 변환처리에서 착안 화소(POO)에 관해서의도트 형성 유무를 판단하고 있는 모양을 나타내는 설명도이다. 착안 화소(PO0)에 관해서의 도트 형성 유무의 판단에는, 상술한 평균오차 최소법과 마찬가지로, 화소(P-1-1)에서 발생한 계조 오차(E-1-1)와, 화소(P-10)에서 발생한 계조 오차(E-10)와, 화소(P-11)에서 발생한 계조오차(E-11)와, 화소(P0-1)에서 발생한 계조 오차(E0-1)를 사용한다. 도 18 (a)의 오른쪽의 4개의 직사각형은 중간 버퍼로서 사용되는 4개의 레지스터를 모식적으로 나타낸 것이다. 설명의 편의로부터, 여기서는 각 레지스터에 R1, R2, R3, R4와 각각 부합을 붙여 구별하는 것으로 한다.
각 레지스터에는 착안 화소에 대해 소정의 위치 관계에 있는 화소의 계조오차가 오버라이팅된다. 즉, 레지스터(R1)에는 항상 착안 화소의 오른쪽 위에 있는 화소에서의 계조 오차가 기억되고, 레지스터(R2)에는 착안 화소의 바로 위에 있는 화소에서의 계조 오차가 기억되며, 레지스터(R3)에는 착안 화소의 왼쪽 위의 화소의 계조 오차가, 레지스터(R4)에는 왼쪽 옆의 화소의 계조오차가 기억된다. 각 레지스터에 각각의 계조오차를 기억하는 처리에 관해서는 후술한다.
제4 실시예의 계조수 변환처리에서는 이들 4개의 레지스터에 기억되어 있는 각 화소에서의 계조 오차와, 미리 화소마다 설정되어 있는 중량 계수를 고려하여, 착안 화소에서의 보정 데이터를 산출한다. 요컨대, 상술한 평균오차 최소법에서는 각 화소에서의 계조 오차를 오차 버퍼로부터 판독출력하는데 대해, 여기서는 각 레지스터에 미리 기억되어 있는 곳이 크게 다르다. 이렇게 해서 구한 보정 데이터와 소정의 임계값을 비교함으로써, 착안 화소에 관해서의 도트 형성 유무를 판단한다. 도트 형성 유무를 판단하면, 계속해서 착안 화소(P00)에서의 계조 오차(E00)를 산출한다. 계조오차는 보정 데이터와 착안 화소에서의 결과값의 차를 취함으로써 구할 수 있다.
이렇게 해서, 착안화소에 관해서의 계조 오차(E00)가 요청되면, 새로운 착안화소에 관해서의 도트 형성 판단을 하기 위해서, 각 레지스터에 대해 도 18 (b)에 나타내는 조작을 가한다. 우선, 레지스터(R4)에 기억되어 있는 오차를 오차 버퍼에 기록 입력한다. 도 18 (a)를 이용하여 설명한 바와 같이, 레지스터(R4)에는 항상 착안 화소의 왼쪽 옆의 화소에서 생긴 계조 오차가 기억되어 있기 때문에, 레지스터(R4)의 값은 착안화소의 왼쪽 옆의 화소의 오차 버퍼에 오버라이팅해 준다. 이어서, 조금 전 구한 화소(P00)에 관해서의 계조 오차(E00)를 레지스터(R4)에 오버라이팅하고, 그 위에 레지스터(R2)의 값을 레지스터(R3)로, 레지스터(R1)의 값을 레지스터(R2)로 각각 이동시킨다. 즉, 착안 화소가 화소(PO0)에서 오른쪽 옆의 화소(
PO1)로 이동하는 것에 대응하여, 각 레지스터의 값을 이동시키는 것이다. 이들의 처리는 CPU(102) 내부의 레지스터 사이에서 데이터를 이동시키는 것만으로 좋기 때문에, 지극히 신속하게 행할 수 있다. 최후에, 새로운 착안 화소의 오른쪽 위의 화소에서의 계조 오차를 오차 버퍼로부터 판독출력하여, 레지스터(R1)에 기억시킨다.
이상과 같은 조작을 가함으로써, 각 레지스터에 기억되어 있는 값은 도 18 (a)의 오른쪽에 나타낸 상태로부터 도 18 (c)의 상태로 된다. 도 18 (a)와 도 18 (c)를 비교하면 분명한 바와 같이, 도 18 (c)의 각 레지스터에 기억되어 있는 값은, 도 18 (a)에서, 착안 화소를 화소(P00)에서 화소(P01)로 변경했을 때의 각 레지스터의 값으로 되어 있다. 따라서, 이상과 같은 처리를 반복하여 행하면, 잇달아새로운 화소의 도트 형성 판단을 행할 수 있다. 이와 같이, 제4 실시예의 방법에서는, 계속하여 사용하는 계조 오차는 레지스터에 축적해 둠으로써, 오차 버퍼로부터 계조 오차를 판독출력하는 빈도를 크게 경감시키는 것이 가능해지는 것이다.
E-2. 제4 실시예의 계조수 변환처리:
이하, 상술한 제4 실시예의 계조수 변환처리를 실제로 행하기 위한 처리의 흐름에 관해 간단하게 설명한다. 도 20은 제4 실시예의 계조수 변환처리의 흐름을 나타낸 흐름도이다. 한편, 상술한 각종 실시예의 계조수 변환처리와 마찬가지로, 설명의 번잡화를 피하기 위해서, 이하에서는 잉크의 종류나 도트의 크기를 특정하지 않고 설명하지만, 각 색마다, 혹은 각종 크기의 도트마다 마찬가지의 처리가 행해진다.
제4 실시예의 계조수 변환처리를 개시하면, 우선 처음에 착안 화소의 화상 데이터(Cd)를 판독 입력하고(스텝 S600), 계속해서 착안 화소의 오른쪽 위 화소의 계조 오차를 오차 버퍼로부터 판독 입력하여 레지스터(R1)에 기억한다(스텝 S602). 이 결과, 도 18을 이용하여 설명한 바와 같이, 각 레지스터에는 착안화소 주변의 각 화소에서의 계조오차가 기억된다.
이어서, 각 레지스터에 기억되어 있는 오차와 소정의 중량 계수를 레지스터마다 곱셈하여, 착안 화소의 보정 데이터(Cx)를 산출한다(스텝 S604). 도 19에 나타낸 바와 같이, 착안 화소 주변의 화소에는 화소마다 소정의 중량 계수가 정해져 있기 때문에, 이들 소정의 중량 계수와 기억되어 있는 오차를 레지스터마다 곱셈하고, 얻어진 각 조(條) 셈값과 먼저 판독출력된 화상 데이터(Cd)를 덧셈함으로써,착안 화소의 보정 데이터(Cx)를 산출하는 것이다. 이렇게 해서 구한 보정 데이터(Cx)와 소정의 임계값(th)을 비교한다(스텝 S606). 보정 데이터(Cx) 쪽이 크면 착안 화소에 도트를 형성한다고 판단하여, 판단 결과를 나타내는 변수(Cr)에 도트를 형성하는 것을 의미하는 값「1」을 기록입력하고(스텝 S608), 그렇지 않으면 도트를 형성하지 않은 것을 의미하는 값「O」을 기록 입력한다(스텝 S610). 계속해서, 이러한 판단 결과에 의해 착안화소에 생기는 계조 오차를 산출한다(스텝 S612). 계조 오차는 상술한 각종 실시예와 마찬가지로, 착안화소의 보정 데이터로부터 결과값을 뺄셈하는 것으로 구해진다.
이상과 같이 하여 착안화소에서의 계조 오차가 구해지면, 도 18 (b)를 이용하여 설명한 바와 같이, 각 레지스터에 다음과 같은 일련의 조작을 가한다. 우선, 레지스터(R4)에 기억되어 있는 계조 오차를, 오차 버퍼에 기록 입력한다(스텝 S614). 다음에, 스텝(S612)으로 구한 계조 오차를 레지스터(R4)에 기록 입력한다(스텝 S616). 계속해서, 레지스터(R2)의 값을 레지스터(R3)로 시프트하고(스텝 S618), 레지스터(R1)의 값을 레지스터(R2)로 시프트시킨다.(스텝 S620).
이상과 같은 레지스터의 조작이 종료되면, 모든 화소에 관해 도트 형성 판단을 종료했는지의 여부를 판단하고(스텝 S622), 미 판단의 화소가 남아 있으면, 스텝(S600)으로 되돌아가, 모든 화소에 관해 처리가 종료될 때까지, 계속되는 일련의 처리를 반복한다. 모든 화소의 도트 형성 유무를 판단하면, 제4 실시예의 계조수 변환처리가 빠져, 도 4에 나타내는 화상 데이터 변환처리로 복귀한다.
이상으로 설명한 제4 실시예의 계조수 변환처리에서는 1화소의 도트 형성 유무를 판단할 때마다, 오차 버퍼로부터 1화소분의 계조오차를 판독출력하는 것만으로 좋다. 평균오차 최소법을 적용하는 경우에는 상술한 바와 같이, 1화소의 판단을 행할 때마다 오차 버퍼로부터 4화소분의 확산오차를 판독출력할 필요가 있는 것과 비교하여, 오차 버퍼에 대해 데이터를 판독 기록하는 빈도를 줄일 수 있어, 그 정도만큼, 계조수 변환처리를 신속하게 행할 수 있다. 물론, 제4 실시예의 방법과 평균오차 최소법은 수학적으로는 완전히 등가인 처리를 행하고 있고, 제4 실시예의 방법을 이용하면, 평균오차 최소법을 이용한 경우와 마찬가지로, 고화질의 화상을 얻을 수 있다.
한편, 상술한 제4 실시예에서는 중량 계수의 설정으로서, 도 19 (a)에 예시하는 값이 설정되어 있는 것으로 하여 설명했다. 실제의 중량 계수는 도 19에 예시하는 설정에 한정되는 일없이, 화질의 요청에 따라 여러 가지 설정으로 할 수 있는 것은 말할 필요도 없다. 또한, 상술한 제4 실시예에서는, 도 19 (a)에 예시한 설정을 이용하고 있는 것에 대응하여, 중간 버퍼로서 4개의 레지스터를 사용하였지만, 사용하는 중량 계수의 설정에 따라, 보다 많은 레지스터가 필요하게 되는 경우가 있는 것은 물론이다.
그 위에, 상술한 제4 실시예에서는 중간 버퍼로서, CPU(102)에 내장된 레지스터를 이용하는 것으로 하여 설명했지만, 레지스터에 한하지 않고, 캐쉬메모리 등이 고속으로 판독기록 가능한 기억소자를 이용해도 좋은 것은 물론 이다.
이상, 각종의 실시예에 관해 설명해 왔지만, 본 발명은 상기 모든 실시예에 한정되는 것이 아니고, 그 요지를 일탈하지 않은 범위에서 여러 가지의 태양으로실시할 수 있다.
예컨대, 상술한 각종 실시예에서는, 각 화소의 보정 데이터와 소정의 임계값의 대소관계에 의거하여 도트의 형성 유무를 판단하는 것으로 하여 설명했다. 물론, 도트 형성의 유무를 판단하는 방법은 상술한 방법에 한하지 않고, 주지의 각종방법을 적용하는 것이 가능하다.
또한, 상술한 각종 실시예에서는 설명의 번잡화를 피하기 위해서, 형성되는 도트의 종류는 1종류로서, 각 화소에는 도트가 형성되던지, 형성되지 않던지 2개의 상태밖에 취할 수 없는 것으로 하여 설명했다. 물론, 도트의 크기, 혹은 잉크 농도가 다른 복수 종류의 도트가 형성 가능하게 해도 좋다. 예컨대, 대 ·소의 2종류의 도트가 형성 가능하게 하여, 다음과 같이 하여 도트의 형성 유무를 판단해도 좋다. 즉, 2개의 임계값(th1)과 임계값(th2)(다만, th1>th2로 한다)을 설정해 두고, 화소의 보정 데이터가 임계값(th1)보다 크면 대 도트를 형성한다고 판단하고, 임계값(t
h1)보다 작게 또한 임계값(th2)보다 크면 소 도트를 형성한다고 판단하며, 임계값(
th2)보다 작은 경우는 도트를 형성하지 않는다고 판단한다. 각 화소에서 발생하는 계조 오차는 그 화소의 보정 데이터로부터 결과값을 뺄셈함으로써 산출할 수 있다.
한편, 이상의 각종 실시예에서 오차 버퍼는 논리적으로는 각 화소마다 준비되는 것으로 되지만, 실제상은 수 레지스터분의 오차 버퍼만을 준비하여, 도트 형성 유무가 판단된 화소의 오차 버퍼는 다른 화소의 오차 버퍼로서 전용된다. 설명의 번잡화를 피할 목적으로, 상술한 각종 실시예에서는 마치 모든 화소분의 오차 버퍼가 준비되어 있는 것처럼 설명했지만, 수 레지스터분의 오차 버퍼를 반복하여사용해도 상관없는 것은 물론이다.
또한, 상술한 기능을 실현하는 소프트웨어 프로그램(어플리케이션 프로그램)을 통신회선을 거쳐 컴퓨터 시스템의 메인 메모리 또는 외부기억장치에 공급하여 실행하는 것이라도 좋다. 물론, CD-ROM이나 플로피 디스크에 기억된 소프트웨어 프로그램을 기록 입력하여 실행하는 것이라도 상관없다.
또한, 상술한 각종 실시예에서 계조수 변환처리를 포함하는 화상 데이터 변환처리는 컴퓨터내에서 실행되는 것으로 하여 설명했지만, 화상 데이터 변환처리의 일부 혹은 전부를 프린터 측, 혹은 전용의 화상처리장치를 이용하여 실행하는 것이라도 상관없다.
그 위에, 화상표시장치는 반드시 인쇄 매체 위에 잉크도트를 형성하여 화상을 인쇄하는 인쇄장치에 한정되는 것이 아니라, 예컨대, 액정표시화면 위에서 휘점
(輝點)을 적절한 밀도로 분산시킴으로써, 계조가 연속적으로 변화하는 화상을 표현하는 액정표시장치이라도 상관없다.
상술한 바와 같이, 본 발명은 오차확산법 혹은 평균 오차 최소법을 적용한 경우와 동등한 화질을 유지하면서, 도트 형성 유무의 판단에 요하는 시간을 단축화함으로써, 고화질의 화상을 신속하게 표시할 수 있고 인쇄할 수 있는 효과 등이 있다.

Claims (22)

  1. 각 화소의 계조(階調)값을 나타내는 화상 데이터를 수취하고, 그 화소마다에 그 계조값에 의거 도트 형성 유무를 판단함으로써, 그 화상 데이터를 도트 형성 유무에 의한 표현형식의 화상 데이터로 변환하는 화상처리장치로서,
    상기 도트 형성의 유무를 판단할 때마다 그 판단한 화소에서 발생하는 계조오차를, 그 도트 형성 유무 판단 결과에 의거 산출하여 일시적으로 보지(保持)하는 계조오차 보지수단과,
    소정수의 복수 화소에 관해서의 상기 일시적으로 보지된 계조오차에 의거하여, 그 소정수의 복수 화소의 주변에 있어 도트 형성 유무 판단이 이루어지지 않는 미 판단 화소로 확산되는 확산오차를 산출하고, 그 산출한 확산오차를 그 미 판단 화소에 대응시켜 기억하는 확산오차 기억수단과,
    상기 미 판단 화소에 대응시켜 기억된 상기 확산오차를 고려하면서, 상기 화상 데이터에서의 그 미 판단 화소의 계조값에 의거하여, 그 미 판단 화소에 관해서의 도트 형성 유무를 판단하는 도트 형성 판단수단을
    구비하는 화상처리장치.
  2. 제 1항에 있어서,
    상기 계조오차 보지수단은 상기 확산오차 기억수단에 대해 판독 기록하는 것보다도, 상기 계조 오차가 신속하게 판독 기록 가능한 수단인 화상처리장치.
  3. 제 1항에 있어서,
    상기 확산오차 기억수단은,
    상기 일시적으로 보지된 계조오차가 상기 미 판단 화소의 각각에 분배되는 분배 오차를, 그 계조 오차마다 산출하여 그 각 미 판단 화소에 축적하는 분배오차 축적수단과,
    상기 소정수의 복수 화소에 관해서의 상기 분배오차를 모두 축적할 때마다, 상기 축적되어 있는 모든 그 배분오차를, 상기 확산오차로서 상기 미 판단 화소에 대응시켜 축적하는 확산오차 축적수단을
    구비하는 화상처리장치.
  4. 제 1항에 있어서,
    상기 계조오차 보지수단은 상기 소정수의 복수 화소에 관해서의 상기 계조 오차를 보지하는 수단이고,
    상기 확산오차 기억수단은 상기 미 판단 화소의 각각에 확산되는 상기 확산오차를, 상기 보지되어 있는 소정수의 계조오차에 의거하여 산출하고, 그 산출한 모든 확산오차를 그 각 미 판단 화소에 대응시켜 축적하는 수단인
    화상처리장치.
  5. 제 1항에 있어서,
    상기 확산오차 기억수단은,
    상기 일시적으로 보지된 계조오차가 상기 미 판단 화소의 각각에 분배되는 분배오차를, 그 계조 오차마다 산출하여 그 각 미 판단 화소에 축적하는 분배오차축적수단과,
    상기 소정수의 복수 화소분(分)의 분배오차가 축적된 상기 각 미 판단 화소의 분배오차를, 상기 확산 오차로서 그 미 판단 화소에 대응시켜 기억하는 분배오차 기억수단을
    구비하는 화상처리장치.
  6. 제 1항에 있어서,
    상기 계조오차 보지수단은 상기 소정수의 복수 화소에 관해서의 상기 계조 오차를 보지하는 수단이고,
    상기 확산오차 기억수단은 상기 복수의 미 판단 화소 중에 있어 상기 보지되어 있는 모든 계조 오차가 확산되는 특정화소로의 확산오차를, 그 보지되어 있는 복수의 계조 오차에서 산출하여, 그 특정화소에 대응시켜 기억하는 수단인
    화상처리장치.
  7. 제 1항에 있어서,
    상기 확산오차 기억수단은,
    상기 소정수의 복수 화소 주변의 제1의 소정영역내에 있는 제1의 미 판단 화소의 각각에 관해서는 그 소정수의 복수 화소에 관해서의 상기 계조 오차에 의거 상기 확산 오차를 산출하여, 그 제1의 미 판단 화소에 대응시켜 기억하는 제1의 확산오차 기억수단과,
    상기 소정수의 복수 화소 주변에 있어 상기 제1의 소정영역내에는 없는 제2의 미 판단 화소에 관해서는 상기 계조 오차가 산출될 때마다, 그 계조오차에 의거하여, 그 제2의 미 판단 화소의 각각으로의 상기 확산오차를 산출하여, 그 제2의 미 판단 화소에 대응시켜 기억하는 제2의 확산오차 기억수단을
    구비하는 화상처리장치.
  8. 제 7항에 있어서,
    상기 제2의 확산오차 기억수단은 상기 제1의 소정영역을 포함하는 제2의 소정영역내의 상기 제2의 미 판단 화소에 관해, 상기 확산오차를 산출하여 기억하는 수단인 화상처리장치.
  9. 제 8항에 있어서,
    상기 도트 형성 유무 판단에 관계하는 조건에 따라, 상기 계조 오차를 상기 미 판단 화소로 확산시키는 범위를, 상기 소정수의 복수 화소 주변의 상기 제1의 소정영역과, 상기 제2의 소정영역으로 바꾸는 확산범위 절환(切換)수단을 구비하는 화상처리장치.
  10. 제 9항에 있어서,
    상기 확산범위 절환수단은 상기 도트 형성 유무 판단에 관계되는 조건으로서, 상기 소정수의 복수 화소의 계조값과, 그 각 화소에 관해서의 도트 형성 유무 판단 결과에 의거하여, 상기 계조오차를 확산시키는 범위를 바꾸는 수단인 화상처리장치.
  11. 제 1항에 있어서,
    상기 확산오차 기억수단은 상기 소정수의 복수 화소의 계조 오차로서, 서로 인접하는 화소의 계조 오차에 의거 상기 확산오차를 산출하여, 상기 미 판단 화소에 대응시켜 기억하는 수단인 화상처리장치.
  12. 제 11항에 있어서,
    상기 도트 형성 판단수단은 상기 미 판단 화소에 대응시켜 기억된 상기 확산오차와, 그 미 판단 화소에 인접하는 화소로부터의 상기 확산오차를 고려하여, 그 미 판단 화소에 관해서의 도트 형성 유무를 판단하는 수단인 화상처리장치.
  13. 각 화소의 계조값을 나타내는 화상 데이터를 수취하고, 그 화소마다 그 계조값에 의거 도트 형성 유무를 판단함으로써, 그 화상 데이터를 도트 형성 유무에 의한 표현형식의 화상 데이터로 변환하는 화상처리장치로서,
    상기 도트 형성 유무를 판단할 때마다 그 판단한 화소에서 발생하는 계조 오차를, 그 도트 형성 유무의 판단결과에 의거 산출하고, 그 판단화소에 대응시켜 기억하는 계조오차 기억수단과,
    상기 도트 형성 유무를 판단하고자 하는 착안 화소의 주변에 있어 그 도트 형성 유무를 판단 필(畢)의 기(旣) 판단 화소마다 대응시켜 기억되어 있는 상기 계조 오차를, 그 기 판단 화소마다 보지하는 계조오차 보지수단과,
    상기 기 판단 화소마다 보지되어 있는 계조오차를 고려하면서, 상기 화상 데이터에서의 상기 착안화소의 계조값에 의거하여, 도트 형성 유무를 판단하는 도트 형성 판단수단과,
    상기 착안화소의 다음에 도트 형성 유무를 판단하는 다음 착안화소에 관해서의 상기 기 판단 화소를 검출하여, 그 검출한 기 판단 화소 중에서 상기 계조 오차가 일시적으로 보지되어 있지 않는 기 판단 화소의 계조 오차를 상기 계조 오차 기억수단으로부터 판독출력하고, 그 판독출력한 계조오차로 그 다음 착안 화소에 관해서의 판단에 사용하지 않는 그 계조 오차를 갱신하여, 그 다음 착안 화소의 판단에 이바지하게 하는 계조 오차 갱신수단을
    구비하는 화상처리장치.
  14. 제 13항에 있어서,
    상기 착안 화소에서 생긴 계조 오차를 일시 보지하는 일시보지수단을 구비하고,
    상기 계조 오차 갱신수단은 상기 일시 보지되어 있는 계조 오차로, 상기 다음 착안화소에 관해서의 판단에 사용하지 않는 상기 계조 오차를 갱신하는 수단인 화상처리장치.
  15. 각 화소의 계조값을 나타내는 화상 데이터를 수취하고, 그 화소마다 그 계조값에 의거 도트 형성 유무를 판단함으로써, 그 화상 데이터를 도트 형성 유무에 의한 표현형식의 화상 데이터로 변환하는 화상처리방법으로서,
    상기 도트 형성 유무를 판단할 때마다 그 판단한 화소에서 발생하는 계조 오차를, 그 도트 형성 유무 판단 결과에 의거 산출하여 일시적으로 보지해 두고,
    소정수의 복수화소에 관해서의 상기 일시적으로 보지된 계조 오차에 의거하여, 그 소정수의 복수 화소의 주변에 있어 도트 형성 유무 판단이 이루어져 있지 않는 미 판단 화소로 확산되는 확산오차를 산출하며,
    상기 산출한 확산오차를 상기 미 판단 화소에 대응시켜 기억하고,
    상기 미 판단 화소에 대응시켜 기억된 상기 확산 오차를 고려하면서, 상기 화상 데이터에서의 그 미 판단 화소의 계조값에 의거하여, 그 미 판단 화소에 관해서의 도트 형성 유무를 판단하는
    화상처리방법.
  16. 각 화소의 계조값을 나타내는 화상 데이터를 수취하고, 그 화소마다 그 계조값에 의거 도트 형성 유무를 판단함으로써, 그 화상 데이터를 도트 형성 유무에 의한 표현형식의 화상 데이터로 변환하는 화상처리방법으로서,
    상기 도트 형성 유무를 판단할 때마다 그 판단한 화소에서 발생하는 계조 오차를, 그 도트 형성 유무 판단 결과에 의거 산출하여, 그 판단화소에 대응시켜 기억하고,
    상기 도트 형성 유무를 판단하고자 하는 착안 화소의 주변에 있어 그 도트 형성 유무를 판단 필의 기 판단 화소마다 대응시켜 기억되어 있는 상기 계조 오차를, 그 기 판단 화소마다 보지해 두고,
    상기 기 판단 화소마다 보지되어 있는 계조 오차를 고려하면서, 상기 화상 데이터에서의 상기 착안화소의 계조값에 의거하여, 도트 형성 유무를 판단하며,
    상기 착안화소의 다음에 도트 형성 유무를 판단하는 다음 착안 화소에 관해서의 상기 기 판단화소를 검출하고,
    상기 검출한 기 판단 화소 중에서 상기 계조 오차가 보지되어 있지 않는 기 판단 화소의 계조오차를 판독출력하여, 상기 판독출력한 계조 오차로 그 다음 착안 화소에 관해서의 판단에 사용하지 않는 그 계조 오차를 갱신한 후, 그 다음 착안 화소의 판단에 이바지하게 하는
    화상처리방법.
  17. 각 화소의 계조값을 나타내는 화상 데이터를 수취하고, 그 화소마다 그 계조값에 의거 도트 형성 유무를 판단함으로써, 그 화상 데이터를 도트 형성 유무에 의한 표현형식의 인쇄 데이터로 변환하고, 인쇄매체 위에 잉크 도트를 형성하여 화상을 인쇄하는 인쇄부에 대해, 그 인쇄 데이터를 출력하는 것으로, 그 인쇄부를 제어하는 인쇄제어장치로서,
    상기 도트 형성 유무를 판단할 때마다 그 판단한 화소에서 발생하는 계조 오차를, 그 도트 형성 유무 판단 결과에 의거 산출하여 일시적으로 보지하는 계조오차 보지수단과,
    소정수의 화소에 관해서의 상기 일시적으로 보지된 계조 오차에 의거하여, 그 소정수의 복수 화소의 주변에 있어 도트 형성 유무 판단이 이루어져 있지 않는 미 판단 화소로 확산되는 확산오차를 산출하고, 그 산출한 확산 오차를 그 미 판단 화소에 대응시켜 기억하는 확산오차 기억수단과,
    상기 미 판단 화소에 대응시켜 기억된 상기 확산오차를 고려하면서, 상기 화상 데이터에서의 그 미 판단 화소의 계조값에 의거하여, 그 미 판단 화소에 관해서의 도트 형성 유무를 판단하는 도트형성 판단수단과,
    상기 도트 형성 유무 판단 결과에 의거하여 상기 화상 데이터를 상기 인쇄 데이터로 변환하고, 상기 인쇄부로 출력하는 인쇄 데이터 출력수단을
    구비하는 인쇄제어장치.
  18. 각 화소의 계조값을 나타내는 화상 데이터를 수취하고, 그 화소마다 그 계조값에 의거 도트 형성 유무를 판단함으로써, 그 화상 데이터를 도트 형성 유무에 의한 표현형식의 인쇄 데이터로 변환하고, 인쇄매체 위에 잉크 도트를 형성하여 화상을 인쇄하는 인쇄부에 대해, 그 인쇄 데이터를 출력하는 것으로, 그 인쇄부를 제어하는 인쇄제어장치로서,
    상기 도트 형성 유무를 판단할 때마다 그 판단한 화소에서 발생하는 계조 오차를, 그 도트 형성 유무 판단 결과에 의거 산출하고, 그 판단 화소에 대응시켜 기억하는 계조오차 기억수단과,
    상기 도트 형성 유무를 판단하고자 하는 착안 화소의 주변에 있어 그 도트 형성 유무를 판단 필의 기 판단 화소마다 대응시켜 기억되어 있는 상기 계조 오차를, 그 기 판단 화소마다 보지하는 계조오차 보지수단과,
    상기 기 판단 화소마다 보지되어 있는 계조 오차를 고려하면서, 상기 화상 데이터에서의 상기 착안 화소의 계조값에 의거하여, 도트 형성 유무를 판단하는 도트형성 판단수단과,
    상기 착안화소의 다음에 도트형성유무를 판단하는 다음 착안 화소에 관해서의 상기 기 판단 화소를 검출하여, 그 검출한 기 판단 화소 중에서 상기 계조 오차가 보지되어 있지 않는 기 판단 화소의 계조오차를 상기 계조오차 기억수단으로부터 판독출력하고, 그 판독출력한 계조 오차로 그 다음 착안 화소에 관해서의 판단에 사용하지 않는 그 계조오차를 갱신하여, 그 다음 착안 화소의 판단에 이바지하게 하는 계조오차 갱신수단과
    상기 도트 형성 유무 판단 결과에 의거하여 상기 화상 데이터를 상기 인쇄 데이터로 변환하고, 상기 인쇄부로 출력하는 인쇄 데이터 출력수단을
    구비하는 인쇄제어장치.
  19. 각 화소의 계조값을 나타내는 화상 데이터를 수취하고, 그 화소마다 그 계조값에 의거 도트 형성 유무를 판단함으로써, 그 화상 데이터를 도트 형성 유무에 의한 표현형식의 화상 데이터로 변환하는 방법을 실현하는 프로그램을 컴퓨터로 판독 가능하게 기록한 기록매체로서,
    상기 도트 형성 유무를 판단할 때마다 그 판단한 화소에서 발생하는 계조 오차를, 그 도트 형성 유무 판단 결과에 의거 산출하여 일시적으로 보지해 두는 기능과,
    소정수의 복수 화소에 관해서의 상기 일시적으로 보지된 계조 오차에 의거하여, 그 소정수의 복수 화소의 주변에 있어 도트 형성 유무 판단이 이루어져 있지 않는 미 판단 화소로 확산되는 확산오차를 산출하는 기능과,
    상기 산출한 확산오차를 상기 미 판단 화소에 대응시켜 기억하는 기능과,
    상기 미 판단 화소에 대응시켜 기억된 상기 확산 오차를 고려하면서, 상기 화상 데이터에서의 그 미 판단 화소의 계조값에 의거하여, 그 미 판단 화소에 관해서의 도트 형성 유무를 판단하는 기능을
    실현하는 프로그램을 기록한 기록매체.
  20. 각 화소의 계조값을 나타내는 화상 데이터를 수취하고, 그 화소마다 그 계조값에 의거 도트 형성 유무를 판단함으로써, 그 화상 데이터를 도트 형성 유무에 의한 표현형식의 화상 데이터로 변환하는 방법을 실현하는 프로그램을 컴퓨터로 판독 가능하게 기록한 기록매체로서,
    상기 도트 형성 유무를 판단할 때마다 그 판단한 화소로 발생하는 계조 오차를, 그 도트 형성 유무의 판단 결과에 의거 산출하여, 그 판단 화소에 대응시켜 기억하는 기능과,
    상기 도트 형성 유무를 판단하고자 하는 착안 화소의 주변에 있어 그 도트 형성 유무를 판단 필의 기 판단 화소마다 대응시켜 기억되어 있는 상기 계조 오차를, 그 기 판단 화소마다 보지해 두는 기능과,
    상기 기 판단 화소마다 보지되어 있는 계조 오차를 고려하면서, 상기 화상 데이터에 나타내진 상기 착안 화소의 계조값에 의거하여, 도트 형성 유무를 판단하는 기능과,
    상기 착안화소의 다음에 도트 형성 유무를 판단하는 다음 착안 화소에 관해서의 상기 기 판단 화소를 검출하는 기능과,
    상기 검출한 기 판단 화소 중에서 상기 계조 오차가 보지되어 있지 않는 기 판단 화소의 계조 오차를 판독출력하여, 그 판독출력한 계조 오차로 그 다음 착안 화소에 관해서의 판단에 사용하지 않는 그 계조 오차를 갱신한 후, 그 다음 착안 화소의 판단에 이바지하게 하는 기능을
    실현하는 프로그램을 기록한 기록매체.
  21. 각 화소의 계조값을 나타내는 화상 데이터를 수취하고, 그 화소마다 그 계조값에 의거 도트 형성 유무를 판단함으로써, 그 화상 데이터를 도트 형성 유무에 의한 표현형식의 화상 데이터로 변환하는 방법을 컴퓨터를 이용하여 실현하기 위한 프로그램으로서,
    상기 도트 형성 유무를 판단할 때마다 그 판단한 화소에서 발생하는 계조 오차를, 그 도트 형성 유무 판단 결과에 의거 산출하여 일시적으로 보지해 두는 기능과,
    소정수의 복수 화소에 관해서의 상기 일시적으로 보지된 계조 오차에 의거하여, 그 소정수의 복수 화소의 주변에 있어 도트 형성 유무 판단이 이루어져 있지 않는 미 판단 화소로 확산되는 확산오차를 산출하는 기능과,
    상기 산출한 확산 오차를 상기 미 판단 화소에 대응시켜 기억하는 기능과,
    상기 미 판단 화소에 대응시켜 기억된 상기 확산오차를 고려하면서, 상기 화상 데이터에서의 그 미 판단 화소의 계조값에 의거하여, 그 미 판단 화소에 관해서의 도트 형성 유무를 판단하는 기능을
    실현하기 위한 프로그램.
  22. 각 화소의 계조값을 나타내는 화상 데이터를 수취하고, 그 화소마다 그 계조값에 의거 도트 형성 유무를 판단함으로써, 그 화상 데이터를 도트 형성 유무에 의한 표현형식의 화상 데이터로 변환하는 방법을 컴퓨터를 이용하여 실현하기 위한 프로그램으로서,
    상기 도트 형성 유무를 판단할 때마다 그 판단한 화소에서 발생하는 계조 오차를, 그 도트 형성 유무 판단 결과에 의거 산출하여, 그 판단 화소에 대응시켜 기억하는 기능과,
    상기 도트 형성 유무를 판단하고자 하는 착안 화소의 주변에 있어 그 도트형성 유무를 판단 필의 기 판단 화소마다 대응시켜 기억되어 있는 상기 계조 오차를, 그 기 판단 화소마다 보지해 두는 기능과,
    상기 기 판단 화소마다 보지되어 있는 계조 오차를 고려하면서, 상기 화상 데이터에 나타내진 상기 착안 화소의 계조값에 의거하여, 도트 형성 유무를 판단하는 기능과,
    상기 착안 화소의 다음에 도트 형성 유무를 판단하는 다음 착안 화소에 관해서의 상기 기 판단 화소를 검출하는 기능과,
    상기 검출한 기 판단 화소 중에서 상기 계조 오차가 보지되어 있지 않는 기 판단 화소의 계조 오차를 판독출력하여, 그 판독출력한 계조 오차로 그 다음 착안 화소에 관해서의 판단에 사용하지 않는 그 계조 오차를 갱신한 후, 그 다음 착안 화소의 판단에 이바지하게 하는 기능을
    실현하기 위한 프로그램.
KR1020010060081A 2000-10-06 2001-09-27 화상처리장치, 화상처리방법, 인쇄제어장치 및 기록매체 KR100554002B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
JP2000307896 2000-10-06
JPJP-P-2000-00307896 2000-10-06
JP2001238086A JP2002185788A (ja) 2000-10-06 2001-08-06 画像処理装置、画像処理方法、印刷制御装置、および記録媒体
JPJP-P-2001-00238086 2001-08-06

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020050096852A Division KR100611236B1 (ko) 2000-10-06 2005-10-14 화상처리장치, 화상처리방법, 인쇄제어장치 및 기록매체

Publications (2)

Publication Number Publication Date
KR20020027183A true KR20020027183A (ko) 2002-04-13
KR100554002B1 KR100554002B1 (ko) 2006-02-22

Family

ID=26601689

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020010060081A KR100554002B1 (ko) 2000-10-06 2001-09-27 화상처리장치, 화상처리방법, 인쇄제어장치 및 기록매체
KR1020050096852A KR100611236B1 (ko) 2000-10-06 2005-10-14 화상처리장치, 화상처리방법, 인쇄제어장치 및 기록매체

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020050096852A KR100611236B1 (ko) 2000-10-06 2005-10-14 화상처리장치, 화상처리방법, 인쇄제어장치 및 기록매체

Country Status (5)

Country Link
US (1) US6870641B2 (ko)
EP (1) EP1195982A3 (ko)
JP (1) JP2002185788A (ko)
KR (2) KR100554002B1 (ko)
CN (1) CN1197035C (ko)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3823859B2 (ja) * 2002-03-20 2006-09-20 セイコーエプソン株式会社 複数画素単位で画像データを変換する画像処理装置
JP4192640B2 (ja) 2003-03-19 2008-12-10 セイコーエプソン株式会社 ブロック内のエッジを検出しながら処理を行う画像処理装置、および画像処理方法
US6914700B2 (en) 2003-04-17 2005-07-05 Lexmark International, Inc. Method for reducing migrating residual error in error diffusion halftoning
US7414756B2 (en) * 2003-08-08 2008-08-19 Seiko Epson Corporation Image processing apparatus for converting image data by unit of multiple pixels and printing apparatus
CN1326384C (zh) 2005-04-07 2007-07-11 北京北大方正电子有限公司 一种产生调频网点的方法和装置
CN101340516B (zh) * 2007-07-06 2010-06-02 鸿富锦精密工业(深圳)有限公司 感光度调整装置及调整方法
US8760725B1 (en) * 2008-11-12 2014-06-24 Marvell International Ltd. Tone dependent threshold perturbation error diffusion halftone
KR101328793B1 (ko) * 2009-11-23 2013-11-13 엘지디스플레이 주식회사 오차 확산 방법과 이를 이용한 액정표시장치
JP5609101B2 (ja) * 2009-12-22 2014-10-22 ブラザー工業株式会社 制御装置及びコンピュータプログラム
JP5866905B2 (ja) * 2011-09-16 2016-02-24 ブラザー工業株式会社 印刷実行部に印刷を実行させるための制御装置

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE3751916D1 (de) * 1986-12-19 1996-10-24 Matsushita Electric Ind Co Ltd Gerät zur Verarbeitung von Signalen für die Anzeige von Bildern mit zwei Pegeln
WO1989006080A1 (en) * 1987-12-17 1989-06-29 Eastman Kodak Company Image processor with error diffusion modulated threshold matrix
JP2791066B2 (ja) * 1988-11-15 1998-08-27 キヤノン株式会社 記録装置
US5337160A (en) 1992-07-01 1994-08-09 Hewlett-Packard Error diffusion processor and method for converting a grey scale pixel image to a binary value pixel image
JP3207012B2 (ja) * 1993-03-25 2001-09-10 株式会社東芝 画像処理装置
JP3240803B2 (ja) * 1994-02-14 2001-12-25 セイコーエプソン株式会社 画像処理装置および画像処理方法
JP4155634B2 (ja) * 1998-09-21 2008-09-24 コニカミノルタビジネステクノロジーズ株式会社 画像形成装置及び画像形成システム並びにコンピュータ読み取り可能な記録媒体
JP4236804B2 (ja) * 2000-09-29 2009-03-11 富士通株式会社 画像処理方法、その装置及び記憶媒体

Also Published As

Publication number Publication date
US6870641B2 (en) 2005-03-22
JP2002185788A (ja) 2002-06-28
CN1197035C (zh) 2005-04-13
KR100554002B1 (ko) 2006-02-22
CN1348153A (zh) 2002-05-08
US20020075494A1 (en) 2002-06-20
EP1195982A3 (en) 2004-10-06
KR20050105141A (ko) 2005-11-03
EP1195982A2 (en) 2002-04-10
KR100611236B1 (ko) 2006-08-10

Similar Documents

Publication Publication Date Title
KR100611236B1 (ko) 화상처리장치, 화상처리방법, 인쇄제어장치 및 기록매체
JP4683654B2 (ja) 画像処理装置、画像処理装置の制御方法及びプログラム
JP3912055B2 (ja) 画像処理装置、印刷制御装置、画像処理方法、および記録媒体
JP3661624B2 (ja) 画像処理装置
US7798589B2 (en) Image forming apparatus, image processing apparatus, and control method therefor
JPH11314383A (ja) プリント・ドライバ製造方法及びカラー印刷システム
JP2004235993A (ja) 画像処理方法
US20060082848A1 (en) Halftone processing apparatus, printing apparatus, information processing apparatus, halftone processing method, and program
JP2010035112A (ja) 画像処理装置および画像処理方法
JPH10191083A (ja) カラー画像の2値化方法および記憶媒体
JP3666427B2 (ja) 画像処理装置、印刷制御装置、画像処理方法、および記録媒体
US7362473B2 (en) Image processing technique for tone number conversion of image data
JP2007202170A (ja) 画像処理装置、画像処理方法、印刷制御装置、および記録媒体
EP0997840A2 (en) Multi-level pixel density reduction for printers
JP4228814B2 (ja) 複数のラスタを並行して処理しながら画像を印刷する印刷方法
US7375855B2 (en) Image processing apparatus for converting image data by unit of multiple pixels
JP2935009B2 (ja) 画像処理装置および画像処理方法
JP2005007800A (ja) 所定領域内に形成されるドット個数の情報に基づいて画像を印刷する印刷システム
JP3870604B2 (ja) データ変換装置
JP2005295131A (ja) 画像処理装置、画像処理方法および画像処理プログラム
JP2003051940A (ja) 画像処理方法及びその装置
JP4013855B2 (ja) 複数画素単位で画像データを変換する画像処理装置
JP2005269131A (ja) 画像処理装置、画像処理方法および画像処理プログラム
JP2006345385A (ja) 画像処理方法および画像形成装置
JPH066588A (ja) カラープリンタ

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
AMND Amendment
E902 Notification of reason for refusal
AMND Amendment
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
J201 Request for trial against refusal decision
A107 Divisional application of patent
AMND Amendment
B701 Decision to grant
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20110127

Year of fee payment: 6

LAPS Lapse due to unpaid annual fee