CLAHE的实现和研究
2024-08-24 14:05:43
CLAHE算法对于医学图像,特别是医学红外图像的增强效果非常明显。
中文方面非常好的资料 限制对比度自适应直方图均衡化算法原理、实现及效果
在OpenCV中已经实现了CLAHE,但是它在使用过程中,存在参数选择的问题。为了从根本上搞明白,我参考了网络上的一些代码
实现了基于OpenCV的CLAHE实现和研究。从最基本的开始做,分别实现HE算法,AHE算法,CLHE算法和CLAHE算法。素材分别采用了手部和手臂的红外图片,同时调用OpenCV生成代码和自己编写代码进行比对。
调用代码和实现效果:
);
Mat dst ;
}
Mat dst ;
}
原始图像
GOCLAHE效果
OpenCV CLAHE效果
HE算法:Mat eaualizeHist_GO(Mat src)
{
] };
] .};
;i;j;i ; i)
C[i] .0f ] .0f ;i ;j ;
}
}
return HT_GO;
}
] };
] .};
;i;j;i ; i)
C[i] .0f ] .0f ;i ;j ;
}
}
return HT_GO;
}
AHE算法:
Mat aheGO(Mat src,)
{
Mat AHE_GO ][] };
][] .};
;i;j ; k ; k)
C2[num][k] .0f ] .0f ;i;j ;
}
}
}
}
return AHE_GO;
}
{
Mat AHE_GO ][] };
][] .};
;i;j ; k ; k)
C2[num][k] .0f ] .0f ;i;j ;
}
}
}
}
return AHE_GO;
}
CLHE算法:
)
{
] };
] .};
;i;j;
;
; k ; k;
; k ; k;i ; i)
C[i] .0f ] .0f ;i ;j ;
}
}
return CLHE_GO;
}
{
] };
] .};
;i;j;
;
; k ; k;
; k ; k;i ; i)
C[i] .0f ] .0f ;i ;j ;
}
}
return CLHE_GO;
}
CLAHE不包括插值算法:
Mat claheGoWithoutInterpolation(Mat src, )
{
Mat CLAHE_GO ][] };
][] .};
;i;j;
;
; k ; k;
; k ; k ; k ; k)
C2[num][k] .0f ] .0f ;i;j ;
}
}
}
}
return CLAHE_GO;
}
{
Mat CLAHE_GO ][] };
][] .};
;i;j;
;
; k ; k;
; k ; k ; k ; k)
C2[num][k] .0f ] .0f ;i;j ;
}
}
}
}
return CLAHE_GO;
}
CLAHE算法:
Mat claheGO(Mat src,)
{
Mat CLAHE_GO ][] };
][] .};
;i;j;
;
; k ; k;
; k ; k ; k ; k)
C2[num][k] .0f ] .0f ; i ; j )
{
;
CLAHE_GO.at);
} ))){
);
CLAHE_GO.at);
})) ){
;
CLAHE_GO.at);
})) ))){
;
CLAHE_GO.at);
}
)
{
;
))).0f);
}))){
;
))).0f);
} ){
);
;
)).0f);
})) ){
);
;
)).0f);
}
));
)).0f)).0f);
}
) );
}
}
return CLAHE_GO;
}
{
Mat CLAHE_GO ][] };
][] .};
;i;j;
;
; k ; k;
; k ; k ; k ; k)
C2[num][k] .0f ] .0f ; i ; j )
{
;
CLAHE_GO.at);
} ))){
);
CLAHE_GO.at);
})) ){
;
CLAHE_GO.at);
})) ))){
;
CLAHE_GO.at);
}
)
{
;
))).0f);
}))){
;
))).0f);
} ){
);
;
)).0f);
})) ){
);
;
)).0f);
}
));
)).0f)).0f);
}
) );
}
}
return CLAHE_GO;
}
原始图像
GOCLAHE效果
OpenCV CLAHE效果
从结果上来看,GOCLAHE方法和OpenCV提供的CLAHE方法是一样的。
再放一组图片
代码实现之后,留下两个问题:
集中在这段代码
;
;
;
1、在进行CLAHE中CL的计算,也就是限制对比度的计算的时候,参数的选择缺乏依据。在原始的《GEMS》中提供的参数中, fCliplimit = 4 , uiNrBins = 255.但是在OpenCV的默认参数中,这里是40.就本例而言,如果从结果上反推,我看10比较好。这里参数的选择缺乏依据;
2、CLHE是可以用来进行全局直方图增强的,那么这个时候,这个average 如何计算,肯定不是width * height/255,这样就太大了,算出来的LIMIT根本没有办法获得。
但是就实现血管增强的效果而言,这些结果是远远不够的。一般来说,对于CLAHE计算出来的结果,进行Frangi增强或者使用超分辨率增强?结果就是要把血管区域强化出来。
最新文章
- IOS开发之开发者账号遇到的bug
- MyEclipse从数据库反向生成实体类之Hibernate方式 反向工程
- 【Android 基础】Android中全屏或者取消标题栏
- hdu 1242 Rescue
- 使用Intellij IDEA从零使用Spring MVC
- Linux文件目录结构说明
- 【转】目前最细致清晰的NSDictionary以及NSMutableDictionary用法总结 -- 不错
- linux操作Oracle导入导出dmp数据命令
- 【转】CxImage图像库的使用
- SwifThumb.com 第一家Swift开发人员论坛 QQ群 343549891
- 扩展kmp——原创
- POJ	2246 Matrix Chain Multiplication
- audio标签
- python+selenium安装
- 微信小程序echarts层级太高
- 彻底理解cookie,session,token
- WPF window 子窗口反馈效果(抖动/阴影渐变)
- 2019.02.28 bzoj3527: [Zjoi2014]力(fft)
- mysql表分区案例
- MATLAB线性方程组的迭代求解法