周记 2020.02.17-02.23
1.边缘检测
突然注意到一个事情,用Laplacian和Sobel算子,过渡/渐变性的背景不会被误认为是边缘,而用Schaar和Canny,尤其是前者,就有这种问题。
嗯,虽然是和参数有关的(更何况Schaar调一下就可以变成Sobel),但还是值得注意一下。
2.utility
3.自己写ISP
我自己写,还是用C++吧
4.回到vs
之前一直没有用过lut调色板,只是用Expr工具。通过循环给数组赋值,做一个lut,然后用这个lut调节亮度。
说起来,Python当中的try
、append()
我都没用过。
5.并行与MPI与其他
回想起一年前上的并行计算课,有些东西真的是在不经意间积累,然后又不经意的出现在你身边。
消息传递接口(MPI)库经历了时间的磨砺,在当今环境下依旧是很受欢迎的消息传递中间件
粒度,不同模型:
- 单指令多数据(SIMD)
- 单程序多数据(SPMD)
OpenCL的内核类似于SPMD模型
说起来fmtc有指令集优化,但没用OpenCL。(话说我见过的用OpenCL的滤镜也只有Canny和KNMeans了)
6.Mat与IPlImage
IPlIMage是OpenCV 1中概念,Mat则是OpenCV 2与OpenCV 3中的概念。Mat“更加C++”,引入了类的概念,同时不再需要像IPlIMage那执着于内存管理。
现在读取raw格式还是用的IPlIMage,总感觉这样不太好,还是用Mat更好吧。我得再整理一下整个处理流程了…要不直接把14bit补成16bit?
后续就是用cvConvertScale()
函数把14bit扩张/收缩到了16bit/8bit。
7.C++基础
读到了《现代C++教程:高速上手 C++ 11/14/17/20》这本书,感慨万千啊,过多话不展开了,记录一下我读到的内容。
auto关键字
auto
不能用于函数传参,也不能用于数组推导。
区间for迭代
让C++像Python那样简洁地写for循环。
typename与class
在写模版时,typename
与class
大部分时候没有区别,但有嵌套依赖类型的变量时,需要使用typename
。
实例化与外部模版
C++11引入了外部模版,可以控制编译器是否对模版进行实例化。通过template class
与extern template class
关键字实现。
默认模版参数
C++11可指定默认模版参数。
1 |
|
变长参数模版
可以对类模板和函数模版使用变长参数(真的~好神奇的感觉~~)。
面向对象部分的新特性
这部分有点过于强大…我还得好好理解一下…我之前一直不知道override
和final
这两个关键字是C++11引入的新特性。
8.去马赛克
突发奇想,从某个角度想,raw格式照片的Bayer数据结构,和YUV420的色度半采样有点像。
一些问题
难得在运行出错后,在cmd里有了报错信息,如下。
1 |
|
9.牛客网刷题
突然想到今天(2.20)明明也认真的,但Github上却没有commit。想了一下,上午在牛客网做题。嗯,这样也挺好的。