c++ opencv获取图像hed值

Haematoxylin-Eosin-DAB简称HED,实现原理是参考python中的rgb2hed方法

/* rgb转hed
R     G     B
M=[0.65, 0.7 , 0.29]  Hematoxylin
[0.07, 0.99, 0.11]  Eosin
[0.27, 0.57, 0.78]  DAB
*/
cv::Mat rgb2hed(const cv::Mat& image)
{
	cv::Mat img = image.clone();
	float hed_value[3][3] = { 0.65, 0.70, 0.29, 0.07, 0.99 ,0.11, 0.27, 0.57 ,0.78 };
	cv::Mat  hed_matrix = cv::Mat(3, 3, CV_32FC1, hed_value);
	cv::Mat hed_matrix_inv = hed_matrix.inv();

	//归一化
	cv::Mat logmat;
	img.convertTo(img, CV_32FC3, 1.0 / 255);
	cv::max(img, 1E-6, img);
	cv::log(img, logmat);

	float log_adjust = log(1E-6);
	cv::Mat logmat_adjust = logmat / log_adjust;
	cv::Mat sample = logmat_adjust.reshape(1, img.rows * img.cols);
	cv::Mat stains = sample * hed_matrix_inv;
	cv::Mat hed = stains.reshape(3, img.rows);

	cv::max(hed , 0, hed );
	return hed ;
}

int main()
{
	cv::Mat mt = imread("xx.jpg");
	cvtColor(mt,mt,CV_BGR2RGB);
	cv::Mat hed = rgb2hed(mt);

	std::vector<cv::Mat> v_hed;
	split(hed , v_hed);
	cv::Mat h = v_hed[0];//提取Hematoxylin通道
	cv::Mat e = v_hed[1];//提取Eosin通道
	cv::Mat d = v_hed[2];//提取DAB通道
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
OpenCV中,可以使用threshold函数实现图像的二化分割。这个函数的原型是: double threshold(InputArray src, OutputArray dst, double thresh, double maxval, int type); 其中,src是输入图像,dst是输出的二图像,thresh是阈,maxval是最大,type是阈类型。threshold函数会将输入图像中的像素与设定的阈进行比较,大于阈的像素设置为最大,小于阈的像素设置为0,从而实现图像的二化分割。 在OpenCV中,还提供了其他常用的图像化分割方法,包括最大类间方差法(OTSU)、固定化阈以及自适应阈。你可以根据具体需求选择适合的方法进行图像化分割。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [C++ opencv简单图像的分割](https://blog.csdn.net/HWWH520/article/details/125057741)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *2* [基于opencvc++图像处理(图像化)](https://blog.csdn.net/qq_40118285/article/details/126943293)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值