Просмотр сообщений

В этом разделе можно просмотреть все сообщения, сделанные этим пользователем.


Сообщения - monday2000

Страницы: 1 2 [3] 4 5 ... 72
31
DjVu / Re: Программа DjVu Imager
« : 19 ДХТаРЫм 2013, 22:57:19 »
Сделан английский вариант статьи "Использование DjVu Imager":

http://www.djvu-soft.narod.ru/scan/djvu_imager_en.htm

Статья, правда, значительно урезана по объёму - но, думаю, и так пока достаточно.

32
Артур Васильев
Цитировать
Пользуясь случаем, озвучу свои наивные пожелания. Понимая что это вероятно непосильно )
Совершенно верно. Мне это не под силу.
Цитировать
Существенно ускоряет работу хорошее представление эскизов, не надо щелкать каждую страницу. На широкоэкранном мониторе можно было бы эту область сделать пошире.
Всё эти потери времени - полная ерунда на фоне главных потерь - бесполезный авто-dewarping и корявые автозоны. Я как-то попробовал одну книжку обработать и сделать dewarping вручную на каждой странице, чтобы полностью убрать искривление. Так я 2 недели потратил - и дошёл только до середины книги. :) Так что я буду этими проблемами заниматься.

33
yuree
Цитировать
Простите за навязчивость, но Вы не хотите в свою разработку добавить режим "rectangular" от Петра Ковара (Petr Kovar)?
Я планирую сделать свой аналог, т.к. та опция полезна, но сделана слишком уж топорно.

34
yuree
Цитировать
А почему нельзя было выдрать механизм из сборки ScanTailorPlus
http://forum.ru-board.com/topic.cgi?forum=5&topic=32945&start=1360#12
Цитировать
Попробуйте ветку Plus: это именно то, над чем работал DikBSD, когда добавил флажок, позволяющий отключить выравнивание освещения в смешанном режиме. Но результат Вас, возможно, разочарует, поскольку, как тогда объяснил Tulon, алгоритм определения зон предполагает, что освещение уже выровнено, и если этот этап пропустить, то конфигурация зон может оказаться довольно странной.
http://forum.ru-board.com/topic.cgi?forum=5&topic=32945&start=1360#14
Цитировать
Возможность не выравнивать освещение в смешанном режиме была добавлена в ветке Plus, но нынешняя реализация представляет собой скорее хак, чем настоящее решение, поскольку зоны в этом случае определяются вкривь и вкось.
В ветке Plus выравнивание освещения для mixed просто отключается и всё. Я же сделал по-другому: у меня оно не отключается, а просто изображение содержимого зон берётся из исходного изображения, не подвергавшемуся выравниванию освещённости.

Т.е. вместо отключения я использую подмену.

35
Я залил последнюю сборку на https://sourceforge.net/projects/scantailor/files/scantailor-devel/featured/

36
DjVu / Re: Full fledged color scanning with OCR
« : 14 ДХТаРЫм 2013, 23:49:19 »
zen.loop
Цитировать
This I don't understand what you mean. Could you be more specific, please? Which settings should I change?
I mean the program profiles. Try to experiment with them.

37
DjVu / Re: Программа DjVu Imager
« : 14 ДХТаРЫм 2013, 23:47:19 »
Нет у меня времени, чтобы ответить на все эти вопросы. Может, как-нибудь потом. Это ж надо лезть в исходники, вспоминать. Лучше я буду Скан Тейлором заниматься.

38
DjVu / Re: Программа DjVu Imager
« : 13 ДХТаРЫм 2013, 23:12:41 »
Обновлена статья

Использование DjVu Imager

http://www.djvu-soft.narod.ru/scan/djvu_imager.htm

39
DjVu / Re: Full fledged color scanning with OCR
« : 13 ДХТаРЫм 2013, 20:35:35 »
zen.loop
Цитировать
Can you see this image?
Yes.
Цитировать
And how do we do the OCR on top of that full color djvu, which program do we use?
ABBYY FineReader the latest versions. Load your DjVu in it, OCR it, and generate the OCRed DjVu. Then use DjVuOCR 2 program to transpose the OCR layer from the ABBYY-made DjVu (which would be too big-sized) into original one.
Цитировать
Is the final size the same?
No, it is a bit bigger, but just a little bit.
Цитировать
then djvusolo/small at Photo600
You might experiment with the automatic segmention in DjVu Small - in order to auto-separate the white text into the text layer. In case of success it will cut the size of the final DjVu.

40
Я нашёл ошибку в экспорте субсканов. Ошибка возникает при экспорте одиночных сканов - в отличие от случая сдвоенной страницы - выдаётся сообщение об ошибке "не найден файл ...L" (левый).

Код исправления:
C:\build\scantailor_featured\MainWindow.cpp

MainWindow::ExportOutput(QString export_dir_path, bool default_out_dir, bool split_subscans)
{
.......
switch (page_id.subPage())
{
case PageId::SINGLE_PAGE:
erase_variations.push_back(PageId::SINGLE_PAGE);
break;
case PageId::LEFT_PAGE:
erase_variations.push_back(PageId::LEFT_PAGE);
break;
case PageId::RIGHT_PAGE:
erase_variations.push_back(PageId::RIGHT_PAGE);
break;
}
......
Сборка 2013.02.11  http://rghost.ru/43726244

41
Я нашёл ошибку в новой опции Dont_Equalize_Illumination_Pic_Zones.

Ошибка выразилась в том, что при включённом деворпинге и установленной галке "Не выравнивать освещённость в зонах иллюстраций" изображение в зонах заметно смещалось. Ошибку исправил.

Коды исправления:
C:\build\scantailor_featured\filters\output\OutputGenerator.cpp

OutputGenerator::processWithoutDewarping(
......

//begin of modified by monday2000
//Dont_Equalize_Illumination_Pic_Zones
//added:
QImage maybe_normalized_Dont_Equalize_Illumination_Pic_Zones = transform(
input.origImage(), m_xform.transform(),
normalize_illumination_rect, OutsidePixels::assumeColor(Qt::white)
);
//end of modified by monday2000

if (maybe_normalized.format() == QImage::Format_Indexed8) {
combineMixed<uint8_t>(
maybe_normalized, bw_content, bw_mask,
//begin of modified by monday2000
//Dont_Equalize_Illumination_Pic_Zones
//added:
maybe_normalized_Dont_Equalize_Illumination_Pic_Zones,
dont_equalize_illumination_pic_zones
//end of modified by monday2000
);
} else {
assert(maybe_normalized.format() == QImage::Format_RGB32
|| maybe_normalized.format() == QImage::Format_ARGB32);

combineMixed<uint32_t>(
maybe_normalized, bw_content, bw_mask,
//begin of modified by monday2000
//Dont_Equalize_Illumination_Pic_Zones
//added:
maybe_normalized_Dont_Equalize_Illumination_Pic_Zones,
dont_equalize_illumination_pic_zones
//end of modified by monday2000
);
}
}
......

OutputGenerator::processWithDewarping(
......

) * m_xform.transformBack()
);

//begin of modified by monday2000
//Dont_Equalize_Illumination_Pic_Zones
//added:
QImage normalized_original_Dont_Equalize_Illumination_Pic_Zones;

if (color_original) {
normalized_original_Dont_Equalize_Illumination_Pic_Zones
= convertToRGBorRGBA(input.origImage());
} else {
normalized_original_Dont_Equalize_Illumination_Pic_Zones = input.grayImage();
}
//end of modified by monday2000

if (!render_params.normalizeIllumination()) {
.......

dbg->add(dewarped, "dewarped");
}

//begin of modified by monday2000
//Dont_Equalize_Illumination_Pic_Zones
//added:

QImage dewarped_Dont_Equalize_Illumination_Pic_Zones;
try {
dewarped_Dont_Equalize_Illumination_Pic_Zones = dewarp(
QTransform(), normalized_original_Dont_Equalize_Illumination_Pic_Zones,
m_xform.transform(),
distortion_model, depth_perception, bg_color
);
} catch (std::runtime_error const&) {
// Probably an impossible distortion model.  Let's fall back to a trivial one.
setupTrivialDistortionModel(distortion_model);
dewarped_Dont_Equalize_Illumination_Pic_Zones = dewarp(
QTransform(), normalized_original_Dont_Equalize_Illumination_Pic_Zones,
m_xform.transform(),
distortion_model, depth_perception, bg_color
);
}
normalized_original_Dont_Equalize_Illumination_Pic_Zones = QImage(); // Save memory.

//end of modified by monday2000

status.throwIfCancelled();
.....

if (dewarped.format() == QImage::Format_Indexed8) {
combineMixed<uint8_t>(
//begin of modified by monday2000
//Dont_Equalize_Illumination_Pic_Zones
//dewarped, dewarped_bw_content, dewarped_bw_mask
dewarped, dewarped_bw_content, dewarped_bw_mask,
dewarped_Dont_Equalize_Illumination_Pic_Zones,
dont_equalize_illumination_pic_zones
//end of modified by monday2000
);
} else {
assert(dewarped.format() == QImage::Format_RGB32
|| dewarped.format() == QImage::Format_ARGB32);

combineMixed<uint32_t>(
//begin of modified by monday2000
//Dont_Equalize_Illumination_Pic_Zones
//dewarped, dewarped_bw_content, dewarped_bw_mask
dewarped, dewarped_bw_content, dewarped_bw_mask,
dewarped_Dont_Equalize_Illumination_Pic_Zones,
dont_equalize_illumination_pic_zones
//end of modified by monday2000
);
}
}

//begin of modified by monday2000
//Dont_Equalize_Illumination_Pic_Zones
//added:
dewarped_Dont_Equalize_Illumination_Pic_Zones = QImage(); // Save memory.
//end of modified by monday2000

applyFillZonesInPlace(dewarped, fill_zones, orig_to_output);
......

Сборка от 2013.02.10  http://rghost.ru/43703897

42
DjVu / Re: Full fledged color scanning with OCR
« : 10 ДХТаРЫм 2013, 22:23:28 »
zen.loop
Цитировать
http://whatimg.com/i/0wlfh.jpg
http://whatimg.com/i/zjd2b.jpg
http://whatimg.com/i/1x8ej.jpg
These links are broken. I could not look at the samples.

This article is a bit outdated: http://www.djvu-soft.narod.ru/scan/djvu_imager.htm . I should probably update it. But it will take me about a week. You could wait for this time if you wish.

43
Новая сборка.

Добавил новую опцию:

Dont_Equalize_Illumination_Pic_Zones

Не применять выравнивание освещённости к зонам иллюстраций.

Опция - глобальная, оформлена в виде новой галки в окне Настройки. Влияет исключительно на процесс создания выводных "смешанных" сканов.

Возможный сценарий использования:

1. Сделать сканобработку как обычно.
2. Просмотреть сканы на стадии "Вывод", и те "смешанные" сканы, где образовались "пересвеченные" зоны иллюстраций, удалить физически из папки out.
3. Установить галку "Не выравнивать освещённость в зонах иллюстраций" в окне Инструменты - Настройки...
4. Запустить пакетную обработку всех сканов на стадии "Вывод" и уйти заниматься своими делами.

Вместо физического удаления можно применить любой иной способ воздействия на нужный выводной смешанный скан - с таким расчётом, чтобы на него выставился знак вопроса - и потом переобработать его. Но удалить, мне кажется, проще всего.

Опцию я сделал глобальной (а не постраничной) по 2 причинам:

1. Это очень редко нужный функционал. Я сколько лет книги сканирую - и у меня ни разу в ней нужды не возникало. А ведь, как говорит Tulon - "каждая новая галочка - это удар по простоте интерфейса".

2. Сделай я эту опцию постраничной, мне потребовалось бы ставить программно знак вопроса на соответствующий скан и записывать состояния опции в файл задания. Всё это - значительный геморрой, и для такой пустячной вещи это было бы слишком большие усилия с моей стороны.

Коды исправления:
//Dont_Equalize_Illumination_Pic_Zones

C:\build\scantailor_featured\SettingsDialog.h

class SettingsDialog : public QDialog
{
.......
public:
signals:
.......
void DontEqualizeIlluminationPicZonesSignal(bool state);
private slots:
.......
void OnCheckDontEqualizeIlluminationPicZones(bool);

C:\build\scantailor_featured\SettingsDialog.cpp

SettingsDialog::SettingsDialog(QWidget* parent)
......
{
......
ui.DontEqualizeIlluminationPicZones->setChecked(settings.value("settings/dont_equalize_illumination_pic_zones").toBool());
connect(ui.DontEqualizeIlluminationPicZones, SIGNAL(toggled(bool)), this, SLOT(OnCheckDontEqualizeIlluminationPicZones(bool)));
......

void
SettingsDialog::OnCheckDontEqualizeIlluminationPicZones(bool state)
{
QSettings settings;

settings.setValue("settings/dont_equalize_illumination_pic_zones", state);

emit DontEqualizeIlluminationPicZonesSignal(state);
}

C:\build\scantailor_featured\MainWindow.h

class MainWindow :
.......
public slots:
......
void DontEqualizeIlluminationPicZones(bool);
......
private:
......
bool m_dont_equalize_illumination_pic_zones;
}

C:\build\scantailor_featured\MainWindow.cpp

MainWindow::MainWindow()
......
m_dont_equalize_illumination_pic_zones = settings.value("settings/dont_equalize_illumination_pic_zones").toBool();
}

void
MainWindow::DontEqualizeIlluminationPicZones(bool state)
{
m_dont_equalize_illumination_pic_zones = state;
}

void
MainWindow::openSettingsDialog()
{
.....
connect(dialog, SIGNAL(DontEqualizeIlluminationPicZonesSignal(bool)), this, SLOT(DontEqualizeIlluminationPicZones(bool)));
dialog->show();
}

BackgroundTaskPtr
MainWindow::createCompositeTask(
.....
if (last_filter_idx >= m_ptrStages->outputFilterIdx()) {
output_task = m_ptrStages->outputFilter()->createTask(
//begin of modified by monday2000
//Dont_Equalize_Illumination_Pic_Zones
//page.id(), m_ptrThumbnailCache, m_outFileNameGen, batch, debug
page.id(), m_ptrThumbnailCache, m_outFileNameGen, batch, debug,
m_dont_equalize_illumination_pic_zones
//end of modified by monday2000
);
..........

C:\build\scantailor_featured\filters\output\Filter.h

class Filter : public AbstractFilter
{
.....
public:
.....
//begin of modified by monday2000
//Dont_Equalize_Illumination_Pic_Zones
//bool batch, bool debug);
bool batch, bool debug, bool dont_equalize_illumination_pic_zones=false); // "false" as cli workaround
//end of modified by monday2000

C:\build\scantailor_featured\filters\output\Filter.cpp

IntrusivePtr<Task>
Filter::createTask(
......
OutputFileNameGenerator const& out_file_name_gen,
//begin of modified by monday2000
//Dont_Equalize_Illumination_Pic_Zones
//bool const batch, bool const debug)
bool const batch, bool const debug,
bool dont_equalize_illumination_pic_zones)
//end of modified by monday2000
{
......
new Task(
IntrusivePtr<Filter>(this), m_ptrSettings,
thumbnail_cache, page_id, out_file_name_gen,
//begin of modified by monday2000
//Dont_Equalize_Illumination_Pic_Zones
//lastTab, batch, debug
lastTab, batch, debug, dont_equalize_illumination_pic_zones
//end of modified by monday2000
)
);
}

C:\build\scantailor_featured\filters\output\Task.h

class Task : public RefCountable
{
......
public:
Task(IntrusivePtr<Filter> const& filter,
......
PageId const& page_id, OutputFileNameGenerator const& out_file_name_gen,
//begin of modified by monday2000
//Dont_Equalize_Illumination_Pic_Zones
//ImageViewTab last_tab, bool batch, bool debug);
ImageViewTab last_tab, bool batch, bool debug, bool dont_equalize_illumination_pic_zones);
//end of modified by monday2000

......

FilterResultPtr process(
TaskStatus const& status, FilterData const& data,
QPolygonF const& content_rect_phys);
//begin of modified by monday2000
//Dont_Equalize_Illumination_Pic_Zones
//added:
bool m_dont_equalize_illumination_pic_zones;
//end of modified by monday2000

C:\build\scantailor_featured\filters\output\Task.cpp

Task::Task(IntrusivePtr<Filter> const& filter,
.......
PageId const& page_id, OutputFileNameGenerator const& out_file_name_gen,
//begin of modified by monday2000
//Dont_Equalize_Illumination_Pic_Zones
//ImageViewTab const last_tab, bool const batch, bool const debug)
ImageViewTab const last_tab, bool const batch, bool const debug,
bool dont_equalize_illumination_pic_zones)
//end of modified by monday2000
: m_ptrFilter(filter),
........
m_batchProcessing(batch),
//begin of modified by monday2000
//Dont_Equalize_Illumination_Pic_Zones
//m_debug(debug)
m_debug(debug),
m_dont_equalize_illumination_pic_zones(dont_equalize_illumination_pic_zones)
//end of modified by monday2000
{
if (debug) {
......

FilterResultPtr
Task::process(
.....
if (need_reprocess) {
// Even in batch processing mode we should still write automask, because it
.....
out_img = generator.process(
......
params.depthPerception(),
//begin of modified by monday2000
//Dont_Equalize_Illumination_Pic_Zones
//added:
m_dont_equalize_illumination_pic_zones,
//end of modified by monday2000
write_automask ? &automask_img : 0,
.....

C:\build\scantailor_featured\filters\output\OutputGenerator.h

class OutputGenerator
{
public:
.....
QImage process(
TaskStatus const& status, FilterData const& input,
.....
DepthPerception const& depth_perception,
//begin of modified by monday2000
//Dont_Equalize_Illumination_Pic_Zones
//added:
bool dont_equalize_illumination_pic_zones,
//end of modified by monday2000
imageproc::BinaryImage* auto_picture_mask = 0,
......

private:
QImage processImpl(
TaskStatus const& status, FilterData const& input,
......
DepthPerception const& depth_perception,
//begin of modified by monday2000
//Dont_Equalize_Illumination_Pic_Zones
//added:
bool dont_equalize_illumination_pic_zones,
//end of modified by monday2000
imageproc::BinaryImage* auto_picture_mask = 0,
......

QImage processWithoutDewarping(
TaskStatus const& status, FilterData const& input,
ZoneSet const& picture_zones, ZoneSet const& fill_zones,
//begin of modified by monday2000
//Dont_Equalize_Illumination_Pic_Zones
//added:
bool dont_equalize_illumination_pic_zones,
//end of modified by monday2000
imageproc::BinaryImage* auto_picture_mask = 0,
.......

QImage processWithDewarping(
TaskStatus const& status, FilterData const& input,
.......
DepthPerception const& depth_perception,
//begin of modified by monday2000
//Dont_Equalize_Illumination_Pic_Zones
//added:
bool dont_equalize_illumination_pic_zones,
//end of modified by monday2000
imageproc::BinaryImage* auto_picture_mask = 0,
......

static imageproc::GrayImage normalizeIlluminationGray(
......
QTransform const& xform, QRect const& target_rect,
//begin of modified by monday2000
//Dont_Equalize_Illumination_Pic_Zones
//added:
QImage& original_image,
//end of modified by monday2000
imageproc::GrayImage* background = 0, DebugImages* dbg = 0);
.........

C:\build\scantailor_featured\filters\output\OutputGenerator.cpp

template<typename MixedPixel>
void combineMixed(
QImage& mixed, BinaryImage const& bw_content,
//begin of modified by monday2000
//Dont_Equalize_Illumination_Pic_Zones
//BinaryImage const& bw_mask)
BinaryImage const& bw_mask,
//added:
QImage& original_image,
bool dont_equalize_illumination_pic_zones
)
//end of modified by monday2000
{
.....

uint32_t const msb = uint32_t(1) << 31;
//begin of modified by monday2000
//Dont_Equalize_Illumination_Pic_Zones
//added:
uchar* original_image_line = original_image.bits();
int const original_image_stride = original_image.bytesPerLine();
//end of modified by monday2000

for (int y = 0; y < height; ++y) {
.....
} else {
// Non-B/W content.
//begin of modified by monday2000
//Dont_Equalize_Illumination_Pic_Zones
//mixed_line[x] = reserveBlackAndWhite<MixedPixel>(mixed_line[x]);
if (dont_equalize_illumination_pic_zones)
mixed_line[x] = reserveBlackAndWhite<MixedPixel>(original_image_line[x]);
else
mixed_line[x] = reserveBlackAndWhite<MixedPixel>(mixed_line[x]);
//end of modified by monday2000
}
.....
bw_mask_line += bw_mask_stride;
//begin of modified by monday2000
//Dont_Equalize_Illumination_Pic_Zones
//added:
original_image_line += original_image_stride;
//end of modified by monday2000
}
......

QImage
OutputGenerator::process(
TaskStatus const& status, FilterData const& input,
......
DepthPerception const& depth_perception,
//begin of modified by monday2000
//Dont_Equalize_Illumination_Pic_Zones
//added:
bool dont_equalize_illumination_pic_zones,
//end of modified by monday2000
imageproc::BinaryImage* auto_picture_mask,
......
QImage image(
processImpl(
status, input, picture_zones, fill_zones,
dewarping_mode, distortion_model, depth_perception,
//begin of modified by monday2000
//Dont_Equalize_Illumination_Pic_Zones
//added:
dont_equalize_illumination_pic_zones,
//end of modified by monday2000
auto_picture_mask, speckles_image, dbg
........

GrayImage
OutputGenerator::normalizeIlluminationGray(
.......
QTransform const& xform, QRect const& target_rect,
//begin of modified by monday2000
//Dont_Equalize_Illumination_Pic_Zones
//added:
QImage& original_image,
//end of modified by monday2000
GrayImage* background, DebugImages* const dbg)
{
.......
if (dbg) {
dbg->add(to_be_normalized, "to_be_normalized");
}
//begin of modified by monday2000
//Dont_Equalize_Illumination_Pic_Zones
//added:
original_image = to_be_normalized;
//end of modified by monday2000
status.throwIfCancelled();
.....

QImage
OutputGenerator::processImpl(
TaskStatus const& status, FilterData const& input,
......
DepthPerception const& depth_perception,
//begin of modified by monday2000
//Dont_Equalize_Illumination_Pic_Zones
//added:
bool dont_equalize_illumination_pic_zones,
//end of modified by monday2000
imageproc::BinaryImage* auto_picture_mask,
......
return processWithDewarping(
status, input, picture_zones, fill_zones,
dewarping_mode, distortion_model, depth_perception,
//begin of modified by monday2000
//Dont_Equalize_Illumination_Pic_Zones
//added:
dont_equalize_illumination_pic_zones,
//end of modified by monday2000
auto_picture_mask, speckles_image, dbg
........
return processWithoutDewarping(
status, input, picture_zones, fill_zones,
//begin of modified by monday2000
//Dont_Equalize_Illumination_Pic_Zones
//added:
dont_equalize_illumination_pic_zones,
//end of modified by monday2000
auto_picture_mask, speckles_image, dbg
.......

QImage
OutputGenerator::processWithoutDewarping(
TaskStatus const& status, FilterData const& input,
ZoneSet const& picture_zones, ZoneSet const& fill_zones,
//begin of modified by monday2000
//Dont_Equalize_Illumination_Pic_Zones
//added:
bool dont_equalize_illumination_pic_zones,
//end of modified by monday2000
imageproc::BinaryImage* auto_picture_mask,
........

normalize_illumination_crop_area.translate(-normalize_illumination_rect.topLeft());

//begin of modified by monday2000
//Dont_Equalize_Illumination_Pic_Zones
//added:
QImage original_image;
//end of modified by monday2000

if (render_params.normalizeIllumination()) {
maybe_normalized = normalizeIlluminationGray(
status, input.grayImage(), orig_image_crop_area,
//begin of modified by monday2000
//Dont_Equalize_Illumination_Pic_Zones
//m_xform.transform(), normalize_illumination_rect, 0, dbg
m_xform.transform(), normalize_illumination_rect, original_image, 0, dbg
//end of modified by monday2000
);
.......

if (maybe_normalized.format() == QImage::Format_Indexed8) {
combineMixed<uint8_t>(
//begin of modified by monday2000
//Dont_Equalize_Illumination_Pic_Zones
//maybe_normalized, bw_content, bw_mask
maybe_normalized, bw_content, bw_mask,
original_image,
dont_equalize_illumination_pic_zones
//end of modified by monday2000
);
} else {
assert(maybe_normalized.format() == QImage::Format_RGB32
|| maybe_normalized.format() == QImage::Format_ARGB32);

combineMixed<uint32_t>(
//begin of modified by monday2000
//Dont_Equalize_Illumination_Pic_Zones
//maybe_normalized, bw_content, bw_mask
maybe_normalized, bw_content, bw_mask,
original_image,
dont_equalize_illumination_pic_zones
//end of modified by monday2000
);
.........

QImage
OutputGenerator::processWithDewarping(
TaskStatus const& status, FilterData const& input,
.......
DepthPerception const& depth_perception,
//begin of modified by monday2000
//Dont_Equalize_Illumination_Pic_Zones
//added:
bool dont_equalize_illumination_pic_zones,
//end of modified by monday2000
imageproc::BinaryImage* auto_picture_mask,
......

) * m_xform.transformBack()
);

//begin of modified by monday2000
//Dont_Equalize_Illumination_Pic_Zones
//added:
QImage original_image;
//end of modified by monday2000

if (!render_params.normalizeIllumination()) {
......
warped_gray_output = normalizeIlluminationGray(
status, input.grayImage(), orig_image_crop_area,
m_xform.transform(), normalize_illumination_rect,
//begin of modified by monday2000
//Dont_Equalize_Illumination_Pic_Zones
//added:
original_image,
//end of modified by monday2000
&warped_gray_background, dbg
.......
if (dewarped.format() == QImage::Format_Indexed8) {
combineMixed<uint8_t>(
//begin of modified by monday2000
//Dont_Equalize_Illumination_Pic_Zones
//dewarped, dewarped_bw_content, dewarped_bw_mask
dewarped, dewarped_bw_content, dewarped_bw_mask,
original_image,
dont_equalize_illumination_pic_zones
//end of modified by monday2000
);
} else {
assert(dewarped.format() == QImage::Format_RGB32
|| dewarped.format() == QImage::Format_ARGB32);

combineMixed<uint32_t>(
//begin of modified by monday2000
//Dont_Equalize_Illumination_Pic_Zones
//dewarped, dewarped_bw_content, dewarped_bw_mask
dewarped, dewarped_bw_content, dewarped_bw_mask,
original_image,
dont_equalize_illumination_pic_zones
//end of modified by monday2000
);
.......


Сборка от 2013.02.09:  http://rghost.ru/43674111

44
NBell
Цитировать
Подумайте, если еще сделать запуск DJVUSMALL и DJVUIMAGER с уже заданными папками EXPORT то это еще более сократит ваше время на книгосоздание.
Была у меня такая мысль. Но я передумал.
Во-первых, Scan Tailor - это кроссплатформенная программа. И я намерен с этим считаться - делать какие-то добавления к Scan Tailor, рассчитанные на работу исключительно под Windows, мне не хочется.

Да, пора уже мыслить кроссплатформенно - не ограничивая себя рамками Windows.

Вот если кто-то изобретёт способ, как запускать documenttodjvu под Linux - тогда ещё можно будет о чём-то задуматься. Причём не просто запустить - а чтобы можно было из своей Linux-программы работать с ней.

Во-вторых, встраивание в Scan Tailor функции создания DjVu приведёт лишь к тому, что поклонники формата PDF начнут просить, чтобы ещё и PDF Scan Tailor научился создавать.

В-третьих, это вредный универсализм. Нельзя в одну программу втиснуть всё. Этот комбайн обязательно заглючит и будет его потребуется очень долго доводить до ума - что нерационально.

И потом - ну какая проблема взять папку export от Scan Tailor и из неё дальше делать то ли DjVu, то ли PDF в сторонних программах?

Куда лучше и полезней заняться улучшением, например, dewarping - вот это будет действительно подспорье.
Цитировать
P.P.S. Вот накидал все поминания правок для русского ридми
Спасибо, конечно, но это Вы, пожалуй, зря столько труда потратили. :) Здесь в топике всё же это есть в случае необходимости.

45
NBell
Цитировать
огромная вам благодарность.
Спасибо. :)
Цитировать
одно разделение сканов уже страняет необходимость st split
Да, собственно именно ради этого я и затеял создание своего клона.
Цитировать
word, finereader 11 - имеют сохранение созданного документа.
Не знаю насчет 11, а в старых версиях FineReader точно не было никакого автосохранения проекта.
Цитировать
это уважение к труду пользователя и снисхождение к его педантичности (не все же педанты, а работу жалко)
Может, и так. Но все вы "просители новых фич" как-то не понимаете, что мои ресурсы ограничены. Я не могу себе позволить делать всё, что ни попросят - я вынужден выбирать. К тому же сделать то автосохранение, о котором Вы говорите - на порядок сложней, чем то, что я уже сделал. Усилий много, а выигрыш от них ничтожен.
Цитировать
а по-русски?
Во-первых, в этом топике есть по-русски. Ну да по-русски я ещё сделаю - и даже в нескольких видах, скорее всего.
Цитировать
--- English-speaking users fond of russian? ---
Этим я хотел сказать, что мне удалось решить проблему последней версии официального СТ, где слетела часть перевода.

Страницы: 1 2 [3] 4 5 ... 72