增强 扫描王 源码_camscanner(扫描全能王)功能解析与复现 - 页面增强

本文探讨了扫描全能王(CamScanner)的主要功能,包括页面截取校正和增强处理。作者对其增强处理,尤其是魔法色彩(magic color)功能进行了深入研究,通过图像去光照处理得到近似结果。文章提到opencv的adaptiveThreshold()函数在灰度化处理中的应用,并分享了一个简单的仿真代码片段来实现页面增强。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

早就在用camscanner(扫描全能王)这个软件,感觉很不错。

主要功能:

1.页面截取校正

2.增强处理(灰度与颜色)

刚好最近工作与此相关,静心做点仿真,看看其中的操作原理,也做个demo玩玩。

关于页面的校正,网上有人做了一些介绍和仿真,大体就是边缘,直线检测,交点,homography求取,最后warp变换。这个后面有时间在看看。

我比较感兴趣它的增强处理,特别是(magic color)的处理,感觉很不错,查了些资料没有看到合适的,其中opencv 中的adaptiveThreshold()函数有其灰度化处理的影子,但彩色增强上不是,后来觉得把问题当去光照处理,得到了较为近似的结果,感觉方向是对,就是细节处理大家不一样。

后续整理好放demo,今天先记录一下。

【2018-12-18】

有人做了这个photoshop下的仿真思路

https://blog.csdn.net/pleasecallmewhy/article/details/8776998

算法以此类同,细节不一。

问题规范为图像A,B,为同一场景在不一样的光照拍摄图片,那么:

光照分布 L = A / B

如果已知 A, L ,则 B = A / L (B 为A去光照的结果)

这里L约等于 gaussFilter(A, 大核)

算是展现了图像除法的经典案例

效果比对

如果运行出错,请自行安装VC_RedistInstaller.exe

仿真程序

不要再问我要 code了,简单仿真 opencv code

cv::Mat pageEnhance(cv::Mat &xin)

{

cv::Mat fin;int r = (int)(sqrt((float)xin.cols * xin.rows) / 32.0f) + 1;

cv::GaussianBlur(xin, fin, cv::Size(r+ r + 1, r + r + 1), 0.0f);int clen = xin.channels() *xin.cols;

cv::Mat xout=xin.clone();for (int j = 0; j < xout.rows; j++)

{

uchar*po = xout.row(j).ptr();

uchar*pf = fin.row(j).ptr();for (int i = 0; i < clen; i++)

{

po[i]= (pf[i] == 0) ? 0 : (uchar)std::min(255.0f, 255.0f * po[i] /pf[i]);

}

}returnxout;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值