博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
OpenCV函数学习之cvLUT
阅读量:6292 次
发布时间:2019-06-22

本文共 1403 字,大约阅读时间需要 4 分钟。

何为LUT,就是指显示查找表(Look-Up-Table),LUT(Look-Up Table)实际上就是一张像素灰度值的映射表,它将实际采样到的像素灰度值经过一定的变换如阈值、反转、二值化、对比度调整、线性变换等,变成了另外一个与之对应的灰度值,这样可以起到突出图像的有用信息,增强图像的光对比度的作用。

我在以前写的python灰度变换就是和这个是一个意思

我们来看看实际运用效果:

 

#include 
<
cv.h
>
#include 
<
highgui.h
>
using
namespace
 std;
int
 main(
int
 argc, 
char
**
 argv) {
IplImage 
*
src_image 
=
0
*
dst_image 
=
0
;
CvMat
*
 lut_mat;
lut_mat 
=
 cvCreateMatHeader(
1
256
, CV_8UC1);
uchar lut[
256
];
for
 (
int
 i 
=
0
; i 
<
256
; i
++
) {
lut[i] 
=
255
-
 i;
}
src_image 
=
 cvLoadImage(
"
Lena.jpg
"
);
dst_image 
=
 cvCloneImage(src_image);
cvSetData(lut_mat, lut, 
0
);
cvLUT(src_image, dst_image, lut_mat);
cvNamedWindow(
"
src_image
"
0
);
cvNamedWindow(
"
dst_image
"
0
);
cvShowImage(
"
src_image
"
, src_image);
cvShowImage(
"
dst_image
"
, dst_image);
cvWaitKey(
0
);
cvReleaseImage(
&
src_image);
cvReleaseImage(
&
dst_image);
return
0
;
}

这个程序,我们实现的是图像色彩的反转

效果如下:

我们通过实现不同的映射表来实现不同的变换效果

后来我发现一个小问题,我在前面实现的对数变换和指数变换的表和这里的表正好相反

我在前面的实现中 table[i] =j 其中 i 是原图中的灰度值,j 是要映射的灰度值。这样我原图中不同的灰度值可以映射到哦同一灰度值上

例如,我可以经过灰度变换把原图中灰度为230以上的点都映射为灰度值255

只需要table[230] = 255, table[231] = 255 ........table[255] = 255

但经过我编程实践后发现OpenCV中的映射表是table[j] = i; j 为要映射的值,i为原图中的值,

那么原图中最多只有一个灰度值能映射为255了,那table[255] = 230,table[255] = 231.........table[255] = 255;

最终都会导致前面的赋值被后面的覆盖,最后原图中灰度值为230-254的点将不会改变,这样也就不能实现我们想要的指数变换和对数变换。

因为他们都是一对多的映射

难道是我自己编程的问题,至少我现在是得到这样的结论。

本文转自博客园知识天地的博客,原文链接:,如需转载请自行联系原博主。

你可能感兴趣的文章
char *a 与 char a[] 的区别
查看>>
Spark ShuffleManager内存缓冲器SortShuffleWriter设计思路剖析-Spark商业环境实战
查看>>
端午郑州行·世纪欢乐园
查看>>
【谦先生日志】程序员如何优雅地融入新环境
查看>>
Java线程池了解一下
查看>>
Android多线程之ArrayBlockingQueue源码解析
查看>>
分享Hadoop处理大数据工具及优势
查看>>
在Go中构建区块链 第7部分:网络
查看>>
JUC之CountDownLatch的源码和使用场景分析
查看>>
Go实现简单的K-V存储
查看>>
【持续更新】C++中string类使用总结
查看>>
霍夫变换概述和标准霍夫变换
查看>>
iOS 跳转App的二三事
查看>>
PhpStorm+Homestead+Xdebug调试Laravel
查看>>
Promise从入门到精通
查看>>
django 限制匿名用户访问以及重定向
查看>>
手把手教你实现一个 Vue 进度条组件!
查看>>
吃透这套架构演化图_从零搭建Web网站也不难!
查看>>
Java架构-(十) 整合spring cloud云架构 - SSO单点登录之OAuth2.0登录认证(1)
查看>>
Android热修复之 阿里开源的热补丁
查看>>