目录
(1)暗电流
物理器件不可能是理想的, 由于杂质、 受热等其他原因的影响, 即使没有光照射到像素,像素单元也会产生电荷, 这些电荷产生了暗电流。 而且, 暗电流与光照产生的电荷很难进行区分。
(2)Black Level
用来定义图像数据为0时对应的信号电平。
(1)LSC, Lens Shading Correction,镜头阴影矫正
(2)镜头物理原因和入射光夹角原因,导致一帧内中心点像素的亮度值到边缘处逐渐减弱
(3)镜头阴影 是 摄像头系统本身引入的问题,所以需要ISP算法进行矫正
(4)矫正说明,参考学习:https://blog.csdn.net/xiaoyouck/article/details/77206505
(1)DPC, defect pixel correction(有时也写为:bad point correction,BPC)
静态坏点:
亮点:一般来说像素点的亮度值是正比于入射光的,而亮点的亮度值明显大于入射光乘以
相应比例,并且随着曝光时间的增加,该点的亮度会显著增加;
暗点:无论在什么入射光下,该点的值接近于0;
动态坏点:在一定像素范围内,该点表现正常,而超过这一范围,该点表现的比周围像素要
亮。与sensor 温度、增益有关,sensor 温度升高或者gain 值增大时,动态坏点会变的更
加明显。
参考学习:https://blog.csdn.net/xiaoyouck/article/details/73134846
(1)AE, auto exposure
(2)曝光时间:sensor 积累电荷的时间,是 sensor pixel 从开始曝光到电量被读出的这段时间。
(3)曝光增益:对 sensor 的输出电荷的总的放大系数,一般有数字增益(dgain)和模拟增益(again),模拟增益引入的噪声会稍小,所以一般优先用模拟增益。
(1)DRC:Dynamic Range Compression
即动态范围压缩,目的是调整图像的动态范围(与曝光有关的亮度范围),使得图像显示出更多的信息。 DRC 模块是一个基于人眼视觉系统特性的高级局部色阶映射(多空间动态范围压缩)引擎,是sensor的一个功能
开启后,会提升暗处细节,同时也提升噪声,导致噪声强度相比DRC关闭时更大些,此时边缘增强,去噪功能都应该与DRC有关
BLC:backlight compensation,背景光补偿
WDR,全称Wide Dynamic Range,即宽动态范围。宽动态就是场景中特别亮的部位和特别暗的部位同时都能看得特别清楚。宽动态范围是图像能分辨最亮的亮度信号值与能分辨的最暗的亮光信号值的比值。
(2)WDR和DRC区别:
DRC开启后主要是提升暗处细节同时也提升噪声,所以在暗光下要考虑如何去掉噪点;而WDR是局部亮局部暗的情况下都能完美曝光显示
(3)WDR和BLC的效果对比,参考:
https://blog.csdn.net/tr_ainiyangyang/article/details/82388559
(1)noise reduction/denoise
参考学习:https://blog.csdn.net/qq_40618816/article/details/105660202
(1)Demosaic, 去马赛克,由Bayer图像到RGB图像的过程
(2)参考:https://blog.csdn.net/helimin12345/article/details/81674590
(1)WB:white balance,白平衡
参考学习:https://zhuanlan.zhihu.com/p/56562780
(2)AWB:automatic white balance,自动白平衡
(1)color correction
(2)CCM, color correction matrix
(3)sensor 对光谱的响应,在RGB 各分量上与人眼对光谱的响应通常是有偏差的,需要通过一个色彩校正矩阵CCM(Color Correction Matrix)校正光谱响应的交叉效应和响应强度,使前端捕获的图片与人眼视觉在色彩上保持一致。实际上矫正过程就是个矩阵运算过程。
(4)颜色矫正能提升图像饱和度,饱和度也称色彩的纯度。取决于该色中含色成分和消色成分(灰色)的比例。含色成分越大,饱和度越大;消色成分越大,饱和度越小。
(1)gamma correction
(2)参考:https://blog.csdn.net/chenjuan0530/article/details/78970791
(1)AGC:automatic gain control,自动增益控制
(2)使用算法自动调节增益系数,使输入值变化很大时输出值基本保持线性不变
(1)CSC(Color Space Conversion)颜色空间转换,一般是将sRGB空间转换到YUV。
(2)LUT(Look-Up Table)查找表技术,可以在两组数据之间建立对应关系。可以用于颜色空间转换、CCM等
(1)CA (Chroma Adjustment)色度调整,在亮度不变的情况下,调整色度。如YUV,对UV进行处理(Y表示亮度)。
(2)CAC (Chromatic Aberration Correction)由于不同颜色的光在通过镜头时以不同的速度传播,镜头对于所有波长的光不能聚集于一点而引起的“紫边”现象。
(1)Sharpen,使图像的边缘部分变清晰
(2)图像锐化的实质:锐化后图像=原图像+加重的边缘
PCR (Preferred Color Reproduction)大部分情况图像是给人看的,不同的人有不同的颜色喜好,根据用户爱好改变色调空间,称为喜好色。也称为感知色。
IE(Image Enhancement)增强图像中的有用信息,它可以是一个失真的过程,其目的是要改善图像的视觉效果,针对给定图像的应用场合。图像增强涉及许多操作,如降噪,边缘增强,对比度增强。因此,图像增强可以不顾增强后的图像是否失真,只要看着舒服就行。
(1)参考手册:图像质量调试工具使用指南.pdf(documents_cn文件夹中)

开发板要使用的程序:Hi3518E_PQ_V1.0.3.0.tgz,解压后将以下文件部署到开发板运行,可复制到挂载目录,执行HiIspTool.sh

电脑端使用的程序:PQTools_V4.4.9.zip,解压打开,免安装直接使用。



All Read:读取开发板默认设置好的参数值,在该软件界面更改了某个参数值,可通过All Write写入到硬件,观察到实时的效果,不过是写入内存,下次开机重启又是原来的值。
注:上述使用的工具以及文档都在海思sdk中,之前的文章中已经提供过链接,这里不再赘述
(1)确认编译过的SDK,编译运行测试好的sample
(2)串口终端和telnet双登录以便两边同时运行程序(一边运行HiIspTool.sh,一边运行sample)
(3)Windows IP设置好,防火墙关闭
(1)读取寄存器值
(2)实时更改gamma看效果


(3)实时更改sharpen看效果

更多使用细节,请参考《图像质量调试工具使用指南.pdf》,
(1)gamma
(2)sharpen

HI_VOID GammaInitLin(HI_VOID)函数内。
(1)PQTool工具读取gamma参数,存成txt文件,和源码中写死的值对比,看是否相同。

(2)PQTool中更改gamma参数,保存效果截图,保存新参数到一个txt文件

(3)将参数txt文件更改格式后备用(变成源码中的格式),可通过C程序实现:
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char**argv)
{
FILE * pF = NULL;
char *pBuf = NULL;
size_t len = 0, i = 0, j = 0;
if (argc != 3)
{
printf("usage: %s srcfilename dstfilename\r\n", argv[0]);
return -1;
}
pBuf = (char *)malloc(10 * 1024); // 申请10k个字节做缓存区
if (NULL == pBuf)
{
printf("malloc error.\r\n");
return -1;
}
pF = fopen(argv[1], "r");
if (NULL == pF)
{
printf("fopen %s error.\r\n", argv[1]);
return -1;
}
len = fread(pBuf, sizeof(char), 10*1024, pF);
fclose(pF);
for (i=0, j=0; i<len;)
{
switch (pBuf[i])
{
case '\r':
pBuf[j] = ','; i++; j++;
break;
case '\n':
i++;
break;
default:
pBuf[j] = pBuf[i]; i++; j++;
break;
}
}
pF = fopen(argv[2], "w+");
if (NULL == pF)
{
printf("fopen %s error.\r\n", argv[2]);
return -1;
}
fwrite(pBuf, sizeof(char), j, pF);
free(pBuf);
fclose(pF);
return 0;
}
(4)在isp源码中更改新参数,并且重新编译整个isp,会自动更新mpp目录下的库文件
(5)重新部署新生成的ko文件到开发板,重启开发板
(6)重新编译sample,在开发板中运行看效果,和之前的截图对比
注:本文章参考了《朱老师物联网大讲堂》课程笔记,并结合了自己的实际开发经历以及网上他人的技术文章,综合整理得到。如有侵权,联系删除!水平有限,欢迎各位在评论区交流。
GivenIamadumbprogrammerandIamusingrspecandIamusingsporkandIwanttodebug...mmm...let'ssaaay,aspecforPhone.那么,我应该把“require'ruby-debug'”行放在哪里,以便在phone_spec.rb的特定点停止处理?(我所要求的只是一个大而粗的箭头,即使是一个有挑战性的程序员也能看到:-3)我已经尝试了很多位置,除非我没有正确测试它们,否则会发生一些奇怪的事情:在spec_helper.rb中的以下位置:require'rubygems'require'spork'
我有带有Logo图像的公司模型has_attached_file:logo我用他们的Logo创建了许多公司。现在,我需要添加新样式has_attached_file:logo,:styles=>{:small=>"30x15>",:medium=>"155x85>"}我是否应该重新上传所有旧数据以重新生成新样式?我不这么认为……或者有什么rake任务可以重新生成样式吗? 最佳答案 参见Thumbnail-Generation.如果rake任务不适合你,你应该能够在控制台中使用一个片段来调用重新处理!关于相关公司
使用Ruby1.9.2运行IDE提示说需要gemruby-debug-base19x并提供安装它。但是,在尝试安装它时会显示消息Failedtoinstallgems.Followinggemswerenotinstalled:C:/ProgramFiles(x86)/JetBrains/RubyMine3.2.4/rb/gems/ruby-debug-base19x-0.11.30.pre2.gem:Errorinstallingruby-debug-base19x-0.11.30.pre2.gem:The'linecache19'nativegemrequiresinstall
我有:When/^(?:|I)follow"([^"]*)"(?:within"([^"]*)")?$/do|link,selector|with_scope(selector)doclick_link(link)endend我打电话的地方:Background:GivenIamanexistingadminuserWhenIfollow"CLIENTS"我的HTML是这样的:CLIENTS我一直收到这个错误:.F-.F--U-----U(::)failedsteps(::)nolinkwithtitle,idortext'CLIENTS'found(Capybara::Element
我正在尝试使用Ruby2.0.0和Rails4.0.0提供的API从imgur中提取图像。我已尝试按照Ruby2.0.0文档中列出的各种方式构建http请求,但均无济于事。代码如下:require'net/http'require'net/https'defimgurheaders={"Authorization"=>"Client-ID"+my_client_id}path="/3/gallery/image/#{img_id}.json"uri=URI("https://api.imgur.com"+path)request,data=Net::HTTP::Get.new(path
2022/8/4更新支持加入水印水印必须包含透明图像,并且水印图像大小要等于原图像的大小pythonconvert_image_to_video.py-f30-mwatermark.pngim_dirout.mkv2022/6/21更新让命令行参数更加易用新的命令行使用方法pythonconvert_image_to_video.py-f30im_dirout.mkvFFMPEG命令行转换一组JPG图像到视频时,是将这组图像视为MJPG流。我需要转换一组PNG图像到视频,FFMPEG就不认了。pyav内置了ffmpeg库,不需要系统带有ffmpeg工具因此我使用ffmpeg的python包装p
Ruby是否有逐步调试器,类似于Perl的“perl-d”? 最佳答案 ruby-debug(对于ruby1.8),debugger(对于ruby1.9),byebug(对于ruby2.0)以及trepanning系列都有一个-x或--trace选项。在调试器内部,命令setlinetrace将打开或关闭线路跟踪。这是themanualforruby-debug原来的答案已经修改,因为数据噪声文章的链接,唉,不再有效了。还添加了ruby-debug的后继者 关于ruby-Ruby
有这样的事吗?我想在Ruby程序中使用它。 最佳答案 试试这个http://csl.sublevel3.org/jp2a/此外,Imagemagick可能还有一些东西 关于ruby-是否有将图像文件转换为ASCII艺术的命令行程序或库?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/6510445/
我正在使用Dragonfly在Rails3.1应用程序上处理图像。我正在努力通过url将图像分配给模型。我有一个很好的表格:{:multipart=>true}do|f|%>RemovePicture?Dragonfly的文档指出:Dragonfly提供了一个直接从url分配的访问器:@album.cover_image_url='http://some.url/file.jpg'但是当我在控制台中尝试时:=>#ruby-1.9.2-p290>picture.image_url="http://i.imgur.com/QQiMz.jpg"=>"http://i.imgur.com/QQ
我对图像处理完全陌生。我对JPEG内部是什么以及它是如何工作一无所知。我想知道,是否可以在某处找到执行以下简单操作的ruby代码:打开jpeg文件。遍历每个像素并将其颜色设置为fx绿色。将结果写入另一个文件。我对如何使用ruby-vips库实现这一点特别感兴趣https://github.com/ender672/ruby-vips我的目标-学习如何使用ruby-vips执行基本的图像处理操作(Gamma校正、亮度、色调……)任何指向比“helloworld”更复杂的工作示例的链接——比如ruby-vips的github页面上的链接,我们将不胜感激!如果有ruby-