qttk 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +2 -0
- data/Gemfile +6 -0
- data/Gemfile.lock +36 -0
- data/README.markdown +131 -0
- data/Rakefile +17 -0
- data/TODO.markdown +236 -0
- data/bin/qt +7 -0
- data/etc/gutenprint/gp-tool.rb +56 -0
- data/etc/gutenprint/gutenprint-filter.c +400 -0
- data/etc/gutenprint/gutenprint.rb +86 -0
- data/etc/gutenprint/stp-test +326 -0
- data/etc/images/3551599565_db282cf840_o.jpg +0 -0
- data/etc/images/4843122063_d582c569e9_o.jpg +0 -0
- data/etc/images/4843128953_83c1770907_o.jpg +0 -0
- data/lib/quadtone.rb +56 -0
- data/lib/quadtone/cgats.rb +137 -0
- data/lib/quadtone/cluster_calculator.rb +81 -0
- data/lib/quadtone/color.rb +83 -0
- data/lib/quadtone/color/cmyk.rb +112 -0
- data/lib/quadtone/color/device_n.rb +23 -0
- data/lib/quadtone/color/gray.rb +46 -0
- data/lib/quadtone/color/lab.rb +150 -0
- data/lib/quadtone/color/qtr.rb +71 -0
- data/lib/quadtone/color/rgb.rb +71 -0
- data/lib/quadtone/color/xyz.rb +80 -0
- data/lib/quadtone/curve.rb +138 -0
- data/lib/quadtone/curve_set.rb +196 -0
- data/lib/quadtone/descendants.rb +9 -0
- data/lib/quadtone/environment.rb +5 -0
- data/lib/quadtone/extensions/math.rb +11 -0
- data/lib/quadtone/extensions/pathname3.rb +11 -0
- data/lib/quadtone/printer.rb +106 -0
- data/lib/quadtone/profile.rb +217 -0
- data/lib/quadtone/quad_file.rb +59 -0
- data/lib/quadtone/renderer.rb +139 -0
- data/lib/quadtone/run.rb +10 -0
- data/lib/quadtone/sample.rb +32 -0
- data/lib/quadtone/separator.rb +36 -0
- data/lib/quadtone/target.rb +277 -0
- data/lib/quadtone/tool.rb +61 -0
- data/lib/quadtone/tools/add_printer.rb +73 -0
- data/lib/quadtone/tools/characterize.rb +43 -0
- data/lib/quadtone/tools/chart.rb +31 -0
- data/lib/quadtone/tools/check.rb +16 -0
- data/lib/quadtone/tools/dir.rb +15 -0
- data/lib/quadtone/tools/edit.rb +23 -0
- data/lib/quadtone/tools/init.rb +82 -0
- data/lib/quadtone/tools/install.rb +15 -0
- data/lib/quadtone/tools/linearize.rb +28 -0
- data/lib/quadtone/tools/list.rb +19 -0
- data/lib/quadtone/tools/print.rb +38 -0
- data/lib/quadtone/tools/printer_options.rb +40 -0
- data/lib/quadtone/tools/rename.rb +17 -0
- data/lib/quadtone/tools/render.rb +43 -0
- data/lib/quadtone/tools/rewrite.rb +15 -0
- data/lib/quadtone/tools/separate.rb +71 -0
- data/lib/quadtone/tools/show.rb +15 -0
- data/lib/quadtone/tools/test.rb +26 -0
- data/qttk.gemspec +34 -0
- metadata +215 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: fbc33230e89c5c92e9a6b609c0eea867988aa9b0c05a6943c5a2b0248e5bc1f5
|
4
|
+
data.tar.gz: 9a788b807af82292448b41513133f46895f13502b00de382087dbbc1d4492f04
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: e1df416f2c8704ab15cdfb4f841fe63ab44bf1e3f231fec6d9e1b052d2fed8b22650205dbc54b908f5be4f03df65113df27cd41e3b2ffcfeda6ec484f2ed97ef
|
7
|
+
data.tar.gz: 657245b02b29fea510973e769825e8e86b9540aada9ba795771c9ac97d619bfee8ad949bf0cb717a9a5c9bb5e669545f5f818e7e619483755c83db78a16fd059
|
data/.gitignore
ADDED
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
@@ -0,0 +1,36 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
qttk (0.1.0)
|
5
|
+
builder
|
6
|
+
cupsffi
|
7
|
+
descriptive_statistics
|
8
|
+
ffi
|
9
|
+
hashstruct
|
10
|
+
pathname3
|
11
|
+
rmagick
|
12
|
+
spliner
|
13
|
+
|
14
|
+
GEM
|
15
|
+
remote: http://rubygems.org/
|
16
|
+
specs:
|
17
|
+
builder (3.2.3)
|
18
|
+
cupsffi (0.1.7)
|
19
|
+
ffi
|
20
|
+
descriptive_statistics (2.5.1)
|
21
|
+
ffi (1.9.22)
|
22
|
+
hashstruct (1.3.1)
|
23
|
+
pathname3 (1.2.5)
|
24
|
+
rake (12.3.0)
|
25
|
+
rmagick (2.16.0)
|
26
|
+
spliner (1.0.6)
|
27
|
+
|
28
|
+
PLATFORMS
|
29
|
+
ruby
|
30
|
+
|
31
|
+
DEPENDENCIES
|
32
|
+
qttk!
|
33
|
+
rake
|
34
|
+
|
35
|
+
BUNDLED WITH
|
36
|
+
1.16.1
|
data/README.markdown
ADDED
@@ -0,0 +1,131 @@
|
|
1
|
+
# Quadtone Toolkit (QTTK)
|
2
|
+
|
3
|
+
## NOTE: This README is out of date relative to the current code. Apologies.
|
4
|
+
|
5
|
+
QTTK provides a set of tools for printmakers who use the quadtone inkjet printing process. It works in conjunction with the [QuadtoneRIP](http://www.quadtonerip.com) (QTR) grayscale printing system.
|
6
|
+
|
7
|
+
At the moment, the software consists largely of libraries of code (written in the [Ruby](http://ruby-lang.org) programming language) and a single command-line tool. Hence, it is probably not interesting to most printmakers unless they are either programmers or people comfortable with the Unix command line. Additionally, printmakers who are happy with Epson's 'automatic black and white' mode, the default QTR profiles, or the [Piezography](http://piezography.com) system can probably feel comfortable in staying with the process they currently use.
|
8
|
+
|
9
|
+
However, if you are interested in printing on obscure papers, hand-mixing your own inks, or otherwise want more control and knowledge over the printmaking process, these tools may help. I originally wrote them because I was dissatisfied with the perception of the quadtone process being 'black magic,' inaccessible, or unscientific. It is my hope that tools like QTTK will increase the understanding and acceptance of the quadtone inkjet process.
|
10
|
+
|
11
|
+
At some point, given sufficient interest and motivation, I may write a graphical interface (GUI) to the underlying code. In the meantime, please enjoy the art and craft of the [Unix command line](http://en.wikipedia.org/wiki/Command-line_interface).
|
12
|
+
|
13
|
+
|
14
|
+
## Capabilities
|
15
|
+
|
16
|
+
QTTK enables you to:
|
17
|
+
|
18
|
+
- Generate profiling targets to be printed and analyzed. Many parameters can be set, including paper size, color mode (either QTR calibration or grayscale), ink channels, ink limits, and patch oversampling rates. In addition to an image file (TIFF), a reference data file is also generated, which can be used by MeasureTool or other color profiling systems.
|
19
|
+
|
20
|
+
- Analyze measurements of printed reference targets. Individual ink channels are detected, as well as tonal response curves, maximum-density points, and other data. Grayscale ink separations can be easily calculated, as well as linearization curves for grayscale targets.
|
21
|
+
|
22
|
+
- Create visual charts and graphs of analyzed information, including response curves and density scales.
|
23
|
+
|
24
|
+
- Build and install QTR profiles, based on measured data, avoiding complex and error-prone manual calculations.
|
25
|
+
|
26
|
+
- Preview how images will print through particular QTR profiles, actually separating a grayscale image into the ink channels as represented in the the QTR curve files.
|
27
|
+
|
28
|
+
QTTK intentionally makes few assumptions about equipment and materials. This allows for flexibility, as well as dealing with 'worst case' scenarios. Say you've obtained an old printer with a broken magenta channel, and a yellow channel that refuses to unclog. You've mixed your own inks by hand (using, say, Paul Roark's C6 base; see below for details) at some approximate dilutions. And you are using an exotic paper, not even designed for inkjet. QTTK's tools will allow you to make that a workable scenario.
|
29
|
+
|
30
|
+
|
31
|
+
## Philosophy
|
32
|
+
|
33
|
+
The development of these tools came out of a over a decade's work with the quadtone process, and a great deal of thinking about how these tools fit into the printmaking process. From my experience, I came up with a short list of guiding principles (inspired by Christopher Alexander's *Pattern Language*) to serve as a basis for developing this software.
|
34
|
+
|
35
|
+
- Make tools, not products: Any craftsman has a set of tools which are optimized for specific uses, yet work together to solve a wide variety of problems. Having access to the right tools allows the printmaker to attain the same results as prepackaged, point-and-click software, or to indeed rise above those results. Therefore, design a decent set of tools that can be used in many ways. Further, design tools so they can be augmented or modified as needed.
|
36
|
+
|
37
|
+
- Encourage understanding of process: Much of the modern digital printing process is hidden beneath layers of abstraction and automation. This often denies the possibility of understanding how things really work. True craftsmanship relies on an understanding of materials, processes, and tools. Therefore, as much as possible, show the workings of the process, so they can be both understood and expanded.
|
38
|
+
|
39
|
+
- Apply scientific principles: Most digital printmakers use materials and equipment that are extraordinarily accurate (printers, computers, ink, paper), with results that are repeatable and measurable. Yet existing printmaking tools either discourage measurement at all (presuming that all situations are identical) or go about it using repetitive, error-prone manual methods. Therefore, encourage measurement and analysis (along with understanding of that analysis) at all points of the process.
|
40
|
+
|
41
|
+
- Allow craft & expressiveness: Art lies partly in vision, and partly in process. An artist must be able to work symbiotically with a process, experimenting with materials and observing reactions, and adjusting to those observations. A process that discourages experimentation or adjustments, or whose tedium results in an artist giving up on experimentation, will result in poorer art. Therefore, provide tools for experimentation, measurement, analysis, and production which encourage the highest level of craft.
|
42
|
+
|
43
|
+
|
44
|
+
## Example usage
|
45
|
+
|
46
|
+
There is a single binary command installed, called **qt**. This binary has several subcommands, referred to here as 'tools'. Here are a few examples:
|
47
|
+
|
48
|
+
# Add a new printer
|
49
|
+
qt add-printer Quad4000-C6
|
50
|
+
|
51
|
+
# Examine the printer's options
|
52
|
+
qt printer-options
|
53
|
+
|
54
|
+
# Make a directory for a new profile
|
55
|
+
mkdir GenericMatte
|
56
|
+
cd GenericMatte
|
57
|
+
|
58
|
+
# Initialize a new profile for a given printer, specific inks, and a particular resolution
|
59
|
+
qt init --printer Quad4000-C6 --inks K,C,M,LC,LM,Y --resolution XXX
|
60
|
+
|
61
|
+
# Create characterization and linearization target files (both data & images)
|
62
|
+
qt target
|
63
|
+
|
64
|
+
# Print the characterization target
|
65
|
+
qt print --calibrate characterization.reference.tif
|
66
|
+
|
67
|
+
# Measure the printed characterization target
|
68
|
+
# (measure using MeasureTool, save as 'characterization.measured.txt')
|
69
|
+
|
70
|
+
# Characterize the profile based on the measured data; also install as QTR curve
|
71
|
+
qt profile
|
72
|
+
|
73
|
+
# Print the linearization target
|
74
|
+
qt print linearization.reference.tif
|
75
|
+
|
76
|
+
# Measure the printed linearization target
|
77
|
+
# (measure using MeasureTool, save as 'linearization.measured.txt')
|
78
|
+
|
79
|
+
# Generate SVG chart for measured linearization target (open with SVG-aware browser)
|
80
|
+
qt chart linearization.measured.txt
|
81
|
+
|
82
|
+
# Generate SVG charts for profile (both characterization & linearization) (open with SVG-aware browser)
|
83
|
+
qt chart
|
84
|
+
|
85
|
+
# Read image.jpg and create grayscale channel separations, based on existing curve (outputs montaged separations to image.tif)
|
86
|
+
qt separate /Library/Printers/QTR/quadtone/Quad4000-C6/GenericMatte.quad --montage image.jpg
|
87
|
+
|
88
|
+
|
89
|
+
## Printing a target
|
90
|
+
|
91
|
+
It is essential that you can print a target without its values being modified by the application that's printing it. I have had little luck with Lightroom, and Photoshop has been classically tricky to get right, especially on a Mac. OS X's Preview application seems to do fine, as does Adobe Color Printer Utility.
|
92
|
+
|
93
|
+
|
94
|
+
## Measuring a printed target
|
95
|
+
|
96
|
+
First, let the profile dry completely at room temperature, or use a hair dryer, microwave oven, or other heater to dry more quickly.
|
97
|
+
|
98
|
+
Place several (2-3) sheets of paper of the same type as the printed target on your workspace, with the printed target on top. (This ensures that the workspace color will not affect the readings.)
|
99
|
+
|
100
|
+
When using a strip-reading spectrophotometer, move the instrument slowly across the strip being read. If a row continues to have errors, you may need to read the patches spot by spot, instead of by strip.
|
101
|
+
|
102
|
+
|
103
|
+
## Installation
|
104
|
+
|
105
|
+
Prerequisites:
|
106
|
+
|
107
|
+
- Mac OS X (10.6 or later)
|
108
|
+
- Ruby (1.9.2 or later)
|
109
|
+
- Various Ruby modules (see `qttk.gemspec` for latest requirements, but generally these will be installed automatically)
|
110
|
+
- [ImageMagick](http://www.imagemagick.org) (6.7 or later)
|
111
|
+
- [ArgyllCMS](argyllcms.com) (1.3.6 or later)
|
112
|
+
- [QuadtoneRIP](http://www.quadtonerip.com), Roy Harrington's [QuadtoneRIP](http://www.quadtonerip.com) shareware ($50) grayscale RIP system. For Windows, it is a standalone application; for OS X, it is installed as a set of printer drivers and supporting profiles and other resources.
|
113
|
+
- an inkjet printer supported by QTR (see [QTR requirements](http://www.quadtonerip.com/html/QTRrequire.html)), loaded with several gray shades of ink
|
114
|
+
- an EyeOne (i1) spectrophotometer (other devices, perhaps including flatbed scanners, to be supported in the future)
|
115
|
+
|
116
|
+
I highly suggest that you install Ruby using [RVM](https://rvm.beginrescueend.com/), ImageMagick using [Brew](https://github.com/mxcl/homebrew), and ArgyllCMS and QuadtoneRIP using their respective binary package installers.
|
117
|
+
|
118
|
+
Once the above packages are present, install QTTR by typing:
|
119
|
+
|
120
|
+
$ gem install quadtone
|
121
|
+
|
122
|
+
QTTK has been developed and tested under Mac OS X Lion (10.7). While it is in the development phase, QTTK is not designed or guaranteed to be usable on any other versions of OS X, or indeed any other systems.
|
123
|
+
|
124
|
+
|
125
|
+
## Further information and resources
|
126
|
+
|
127
|
+
- Paul Roark has an extremely useful library of [Digital Black & White Printing Information](http://www.paulroark.com/BW-Info/). His work on 'homebrewed' carbon inkjet inks (see <http://www.paulroark.com/BW-Info/Ink-Mixing.pdf>) is particularly valuable to me, and will be for any aspiring printmaker.
|
128
|
+
|
129
|
+
- Jon Cone and his associates have been pioneers in quadtone inkjet printing. Their [Piezography](http://piezography.com) system has gone through several incarnations, and was where I started quadtone printing with the now-antique Epson 1160. Although they now utilize QTR as their software, they use a proprietary method of generating much smoother curves. They also sell their own quadtone inks, in a variety of tones and channels.
|
130
|
+
|
131
|
+
- [MIS](http://www.inksupply.com/bwpage.cfm) (aka InkSupply.com) is one of the primarily distributors of quadtone-capable inks. They sell a variety of inks in both pre-packaged cartridges for many Epson printers, as well as bulk bottles so you can refill or mix your own. The black pure-carbon pigment product [Eboni-6 (K)](http://www.inksupply.com/product-details.cfm?pn=UT-HEXPT-K) is the usual starting point for most homebrewing printmakers. With that, plus the ingredients for Paul Roark's C6 base, you'll be making your own inks and, hopefully, profiling them with QTTK.
|
data/Rakefile
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
begin
|
2
|
+
require 'bundler/gem_tasks'
|
3
|
+
rescue LoadError
|
4
|
+
warn 'You must `gem install bundler` and `bundle install` to run rake tasks'
|
5
|
+
exit(1)
|
6
|
+
end
|
7
|
+
|
8
|
+
require 'rake/clean'
|
9
|
+
require 'rake/testtask'
|
10
|
+
|
11
|
+
spec = Gem::Specification.load(FileList['*.gemspec'].first)
|
12
|
+
|
13
|
+
task :default => [:test, :install]
|
14
|
+
|
15
|
+
Rake::TestTask.new do |t|
|
16
|
+
t.test_files = spec.test_files
|
17
|
+
end
|
data/TODO.markdown
ADDED
@@ -0,0 +1,236 @@
|
|
1
|
+
# TODO
|
2
|
+
|
3
|
+
- move target data/logic from CurveSet to Target
|
4
|
+
|
5
|
+
- add <xml> tag to SVG-only output
|
6
|
+
|
7
|
+
- build linearization as strip chart
|
8
|
+
- compare quality against spot chart
|
9
|
+
|
10
|
+
- for each new characterization/linearization, add 'session'
|
11
|
+
- each in dated directory
|
12
|
+
- for 'process', each characterization/linearization is averaged
|
13
|
+
- can delete specific -zation
|
14
|
+
|
15
|
+
- improve Color class
|
16
|
+
- allow instantiation by different methods:
|
17
|
+
- color: color object that responds to #to_<color> (eg: Color::CMYK.new(Color::RGB.new(0,0,0)))
|
18
|
+
- use natural scale for each subclass:
|
19
|
+
- RGB: scalar (255 / 65535)
|
20
|
+
- implement basic math
|
21
|
+
- add, subtract, divide, multiply
|
22
|
+
- add tests
|
23
|
+
- creation/serialization/deserialization
|
24
|
+
- equality/comparison
|
25
|
+
- math
|
26
|
+
- move to separate gem
|
27
|
+
|
28
|
+
- simplify spline curves?
|
29
|
+
http://stackoverflow.com/questions/5525665/smoothing-a-hand-drawn-curve
|
30
|
+
http://www.codeproject.com/Articles/18936/A-Csharp-Implementation-of-Douglas-Peucker-Line-Ap
|
31
|
+
|
32
|
+
- add 'check' tool to check attributes & values of profile
|
33
|
+
|
34
|
+
- better command-line option parsing:
|
35
|
+
- tool should just declare attributes, setters
|
36
|
+
- options can come at beginning or end
|
37
|
+
|
38
|
+
- implement actual subclasses of CurveSet for colors, instead of using @color_class
|
39
|
+
|
40
|
+
- split main 'qt' tool into separate binaries:
|
41
|
+
- qtprofile: manage profiles
|
42
|
+
- qtprinter: manage printers
|
43
|
+
- qtpaper: manage paper types
|
44
|
+
- qtprint: print images
|
45
|
+
|
46
|
+
- test linearization
|
47
|
+
- print grayscale target image with QTR curve, then measure target
|
48
|
+
- analyze measured target
|
49
|
+
- build grayscale curve from samples
|
50
|
+
- test for linear response
|
51
|
+
- show dMin/dMax, Lab curve
|
52
|
+
- store each test with timestamp
|
53
|
+
- chart scale over time (with multiple tests)
|
54
|
+
- graph differences between values
|
55
|
+
- graph average dE
|
56
|
+
- see: http://cias.rit.edu/~gravure/tt/pdf/pc/TT5_Fred01.pdf (p. 34)
|
57
|
+
|
58
|
+
|
59
|
+
Target specs:
|
60
|
+
|
61
|
+
width of page 11"
|
62
|
+
width of strip <= 9.5" (24.13cm)
|
63
|
+
patch size (scan direction) >= 10mm (28pt)
|
64
|
+
patch size (perpendicular) 8mm (23pt)
|
65
|
+
gap size in scan direction 0.5mm - 1.0mm (2pt)
|
66
|
+
optimum patches per strip 21
|
67
|
+
|
68
|
+
|
69
|
+
***
|
70
|
+
|
71
|
+
new process (* = user action)
|
72
|
+
|
73
|
+
1. initialize
|
74
|
+
|
75
|
+
- get profile name from current directory
|
76
|
+
- get printer name from argument, or use default
|
77
|
+
- get PPD/etc. for printer
|
78
|
+
- get inks for printer
|
79
|
+
- modify inks from arguments
|
80
|
+
|
81
|
+
% qt init [--printer=Quad-C6] [--inks=-M]
|
82
|
+
|
83
|
+
2. characterize
|
84
|
+
|
85
|
+
a. print characterization target
|
86
|
+
|
87
|
+
- generate characterization target for selected printer's ink channels
|
88
|
+
- one curve per channel, value on 0..1 scale
|
89
|
+
- one column per channel
|
90
|
+
- for each row:
|
91
|
+
- solid patch of given value (for spot reading)
|
92
|
+
- patch with small rectangle of given value inside larger rectangle of maximum value (like current ink limits chart)
|
93
|
+
- solid patch of given value, with thin white lines
|
94
|
+
|
95
|
+
- print characterization target
|
96
|
+
- in calibration mode
|
97
|
+
|
98
|
+
% qt characterize
|
99
|
+
% qt print ...
|
100
|
+
|
101
|
+
b. user examines printed target
|
102
|
+
|
103
|
+
- looks for overall ink quality
|
104
|
+
- finds patches with maximum density
|
105
|
+
- ignores unneeded channels
|
106
|
+
|
107
|
+
c. measure characterization target
|
108
|
+
|
109
|
+
- map patch IDs from arguments to patches
|
110
|
+
- measure spots (using 'spotread')
|
111
|
+
- map patches to per-channel ink-limit value
|
112
|
+
- channels with no patches specified are disabled
|
113
|
+
- save ink limits as L*a*b
|
114
|
+
- calculate ink order
|
115
|
+
- create curveset for enabled channels
|
116
|
+
- apply ink-limits
|
117
|
+
|
118
|
+
% qt characterize <patch-1> <patch-2> ...
|
119
|
+
|
120
|
+
3. profile
|
121
|
+
|
122
|
+
- generate QTR profile
|
123
|
+
- install QTR profile
|
124
|
+
|
125
|
+
4. linearize (either per channel or composite grayscale)
|
126
|
+
|
127
|
+
a. print linearization target
|
128
|
+
|
129
|
+
- generate linearization target
|
130
|
+
- create curveset for color model
|
131
|
+
- if per-channel:
|
132
|
+
- apply ink limits
|
133
|
+
- generate .tiX files for chartread
|
134
|
+
- generate target image
|
135
|
+
|
136
|
+
% qt linearize { --raw | --composite> }
|
137
|
+
% qt print [--calibrate] <target-file>
|
138
|
+
|
139
|
+
b. measure linearization target
|
140
|
+
|
141
|
+
5. test
|
142
|
+
|
143
|
+
a. print test target
|
144
|
+
|
145
|
+
b. measure test target
|
146
|
+
|
147
|
+
- save test results
|
148
|
+
|
149
|
+
6. visualize
|
150
|
+
|
151
|
+
- ink order, color
|
152
|
+
- ink limits
|
153
|
+
- overall linearization (color, error)
|
154
|
+
- density range
|
155
|
+
- QTR curves
|
156
|
+
- channel separations for a given image
|
157
|
+
|
158
|
+
***
|
159
|
+
|
160
|
+
- Improve profile initialization:
|
161
|
+
- Use CupsFFI instead of 'lpadmin' to determine default printer.
|
162
|
+
- Add initial ink-limit to profile/target.
|
163
|
+
- To allow for more accurate results on papers known to be very absorbent.
|
164
|
+
- From posting on DigitalBW: "Find the limit of the full black ink by watching for
|
165
|
+
slight puddling and or printing a pattern with some 1 pixel spaced white lines
|
166
|
+
surrounded by much larger areas of solid black. When the edges of those 1 pixel
|
167
|
+
lines start to get fuzzy, you have too much ink.
|
168
|
+
- Allow negation of inks (eg, '-LLK').
|
169
|
+
- Find good printer defaults:
|
170
|
+
- Medium/high resolution (1440/2880).
|
171
|
+
- Unidirectional ("lospeed").
|
172
|
+
- Dithering mode ("Ordered")
|
173
|
+
- Save curves to profile so they are only generated once (when profiled).
|
174
|
+
|
175
|
+
- Improve target generation:
|
176
|
+
- Add info banner to target:
|
177
|
+
- Mode (characterization, linearization, etc.)
|
178
|
+
- Date
|
179
|
+
- Profile info (printer, paper, inks)
|
180
|
+
|
181
|
+
- Improve analysis:
|
182
|
+
- Experiment with whether more steps or over-sampling is better.
|
183
|
+
- Determine optimum delta-E for ink detection (& make configurable).
|
184
|
+
- Detect & remove bad ink:
|
185
|
+
- Too much deviation in samples.
|
186
|
+
- Calculate dot gain.
|
187
|
+
- http://www.brucelindbloom.com/index.html?Eqn_DotGain.html
|
188
|
+
- Verify limiting/separation algorithms.
|
189
|
+
- Generate sample data.
|
190
|
+
- Write tests to verify operations.
|
191
|
+
- Scale gray values in profile by ink limits?
|
192
|
+
http://lists.apple.com/archives/colorsync-users/2007/Jan/msg00379.html
|
193
|
+
http://www.colorforums.com/viewtopic.php?t=80
|
194
|
+
http://www.onyxtalk.com/thread-understanding-ink-limits
|
195
|
+
- Generate our own QTR curves.
|
196
|
+
- Pre-linearize of individual channels.
|
197
|
+
- Create smoother curves (using bsplines?).
|
198
|
+
- Use L* profiling?
|
199
|
+
- http://tech.groups.yahoo.com/group/QuadtoneRIP/message/9691
|
200
|
+
|
201
|
+
- Improve charting:
|
202
|
+
- Optionally normalize curves in charts.
|
203
|
+
- Represent a/b for measured (L*a*b) colors.
|
204
|
+
- Parameterize error threshold.
|
205
|
+
- Show individual sample points.
|
206
|
+
- Display densities using log scale?
|
207
|
+
- Use Jones diagrams for showing data <http://en.wikipedia.org/wiki/Jones_diagram>.
|
208
|
+
|
209
|
+
- Add confirmation/testing step to profiling:
|
210
|
+
- To test ink settling, sample fading, etc.
|
211
|
+
- Show actual tonal response curve.
|
212
|
+
- Show Lab curve (eg, ink color).
|
213
|
+
- Show charts for final curves.
|
214
|
+
- If multiple test results exist:
|
215
|
+
- Graph change of linearization, density range, color, etc.
|
216
|
+
|
217
|
+
- Build web interface.
|
218
|
+
- Create account.
|
219
|
+
- Create new profile.
|
220
|
+
- Generate reference/target files.
|
221
|
+
- Download as ZIP archive.
|
222
|
+
- Upload measured files.
|
223
|
+
- Analyze/visualize measurements.
|
224
|
+
- Generate QTR profile.
|
225
|
+
- Download QTR profile.
|
226
|
+
- Maybe small raw-printing utility, in MacRuby?
|
227
|
+
- Eventually, curve-builder and installer?
|
228
|
+
|
229
|
+
- Test/rewrite 'add-printer':
|
230
|
+
- Use CupsFFI instead of shelling out to 'lpadmin', etc.?
|
231
|
+
|
232
|
+
- Create guide for process (on wiki).
|
233
|
+
|
234
|
+
- Use Gutenprint to generate DeviceN or ESC/P2 files?
|
235
|
+
|
236
|
+
- Document classes & methods.
|