?

Log in

No account? Create an account
Previous Entry Share Next Entry
Обзор компактного поточного сканера
evfratov
Дисклеймер: собственноручный небольшой обзор устройства, больше численных данных для строгости + код для воспроизводимости и достоверности.

Устройство: Canon P-215 , портативный протяжный сканер на CIS с питанием от 2 x USB и собственным Flash для portable software; сканирование цветное (24бит) двустороннее до 600 x 600 DPI

Не буду приводить серии снимков аппарата на столе в разложенном и сложенном виде, они не несут информации;
прибор из-за своего малого размера и лёгкости выглядит довольно хлипко, что нехорошо при его стоимости. Общая проблема, судя по всему, всех поточных сканеров (если они не являются промышленными роботами) - нестабильный захват листа: пластиково-резиновые ролики иногда не захватывают бумагу, хотя множественный захват листов не наблюдался, что очень неплохо. Сканер ориентирован на офисную бумагу - с тонкой и мягкой бумагой работа может быть не надёжна (если её не стопка), также с плотными материалами могут возникать заедания.

Тестирование скорости: (цвет, одна сторона, 4 повтора, проход по бОльшей стороне)

 одна фотография А6 (отмечено синим one)
150 DPI - 7,1 секунд, стандартное отклонение (SD) 0,9с
200 DPI - 9,9с, SD 0,4с
300 DPI - 15,3с, SD 0,2c
400 DPI - 39,8с, SD 0,5c
600 DPI - 37,6с, SD 3,0c       { из-за серии заеданий возросла погрешность }

две фотографи A6 (отмечено голубым two)
150 DPI - 9,6c, SD 0,8c
200 DPI - 11,5с, SD 0,2с
300 DPI - 21,7с, SD 0,7c
400 DPI - 70,5с, SD 1,3c
600 DPI - 70,2с, SD 0,9c

Из этого следуют выводы о том, что сканер имеет значительное время инициации стартового лага (размер от 5 до 10 секунд, отмечен красным как residual) и что время сканирования на 400 и 600 DPI необнаружимо малы (в эксперименте с 4 повторами и на 1 и 2 фото, что довольно мало):
HTScanner
Следовательно:
Время сканирования одной фотографии без лага на 600 DPI, почти равное 400 DPI составляет 31c, сам лаг 10с... долго 30с....

1 лист А4 (150 DPI, одна сторона, цвет)
8,4с, SD 0,3c
15 листов
72,6с, SD 1,3c

Следовательно:
Время сканирования 1 листа без лага 4,6с, величина лага 3,8с.

Сравнение качества сканированных фотографий:
тестовое фото - фотография каких-то людей
test_01

Для анализа качества рассмотрим на правый верхний угол изображений с 200, 300, 400 и 600 DPI в высоком качестве (слева направо, сверху вних), но представлю её тут в миниатюре:
test-compare
На 200 DPI откровенно видны квадраты пикселей, на 300 DPI блоки чуть меньше, на 400 становится заметен собственный шум фотографии (зернистость), а на 600 DPI хорошо становится видно что сканер полностью захватывает всю чёткость изображения и большее разрешение практически бессмысленно.

Далее R code для дотошных.

 ###  === R code ===  ###
# one photo
o150 <- c(8.4, 6.8, 6.4, 6.6)
o200 <- c(9.4, 10.0, 10.3, 9.7)
o300 <- c(15.5, 15.2, 15.2, 15.2)
o400 <- c(39.7, 39.8, 40.4, 39.1)
o600 <- c(39.2, 41.1, 35.5, 34.7)
one <- list(o150, o200, o300, o400, o600)
names(one) <- c('150 dpi', '200 dpi', '300 dpi', '400 dpi', '600 dpi')
average.one <- unlist(lapply(one, mean))
sd.one <- unlist(lapply(one, sd))

# two photo
t150 <- c(10.6, 9.6, 9.2, 8.8)
t200 <- c(11.7, 11.4, 11.6, 11.4)
t300 <- c(21.3, 22.6, 21.1, 21.8)
t400 <- c(68.6, 71.3, 71.4, 70.7)
t600 <- c(69.0, 70.5, 71.0, 70.4)
two <- list(t150, t200, t300, t400, t600)
names(two) <- c('150 dpi', '200 dpi', '300 dpi', '400 dpi', '600 dpi')
average.two <- unlist(lapply(two, mean))
sd.two <- unlist(lapply(two, sd))

res <- list(o150-(t150-o150), o200-(t200-o200), o300-(t300-o300), o400-(t400-o400), o600-(t600-o600))
average.res <- unlist(lapply(res, mean))

# plotting
png("~/INPUT/HTScanner.png")
boxplot(one, col='blue', main='1 and 2 photos scanning time vs resolution', ylab='Time in seconds', xlab='Resolution', ylim=c(0,72))
boxplot(two, col='cyan', add=T, axis=F, names=F)
boxplot(res, col='red', add=T, axis=F, names=F)
legend(y=70, x=1, legend=c('one', 'two', 'residual'), col=c('blue', 'cyan', 'red'), pch=15)
dev.off

# 15 sheets
single <- c(8.6, 8.6, 8.2, 8.1)
fif <- c(74.4, 72.7, 71.6, 71.5)
av.sheets <- (mean(fif) - mean(single))/14
res.sheet <- mean(single) - av.sheets