根据图像色彩的背景确定阈值改变特定区域的饱和度
2016-11-14 16:54
337 查看
www.tzi.de/tzikeyer/keying_report.pdf
4.5 Auto Spill Removal
有改动。
cv::Mat hls_Img = hlsImg.clone();
cv::MatND hist;
int channels[] = { 0 };
int histSize[] = { 180 };
float hranges[] = { 0, 180 };
const float* ranges[] = { hranges };
calcHist(&hls_Img, 1, channels, cv::Mat(), hist, 1, histSize, ranges, true, false);
double maxVal = 0;
cv::Point maxloc;
minMaxLoc(hist, 0, &maxVal, 0, &maxloc);
hls_Img.convertTo(hls_Img, CV_32FC3);
float keycolor_h = float(maxloc.y) / 180.0f;
for (size_t i = 0; i < hls_Img.rows; i++)
{
for (size_t j = 0; j < hls_Img.cols; j++)
{
float deSatuFactor = 3.0f*sinf(2.0f * 3.1415f * (keycolor_h + (0.25f - hls_Img.at<cv::Vec3f>(i, j)[0] / 180.0f))) - 1.5f;
if (deSatuFactor > 1.0f)
{
hls_Img.at<cv::Vec3f>(i, j)[2] = hls_Img.at<cv::Vec3f>(i, j)[2] * (1.0f / (3.0f + deSatuFactor));
}
else if (deSatuFactor>0.7f && deSatuFactor<1.0f)
{
hls_Img.at<cv::Vec3f>(i, j)[2] = hls_Img.at<cv::Vec3f>(i, j)[2] * deSatuFactor;
}
}
}
hls_Img.convertTo(hls_Img, CV_8UC3);
cvtColor(hls_Img, keyedImg, CV_HLS2BGR);
4.5 Auto Spill Removal
有改动。
cv::Mat hls_Img = hlsImg.clone();
cv::MatND hist;
int channels[] = { 0 };
int histSize[] = { 180 };
float hranges[] = { 0, 180 };
const float* ranges[] = { hranges };
calcHist(&hls_Img, 1, channels, cv::Mat(), hist, 1, histSize, ranges, true, false);
double maxVal = 0;
cv::Point maxloc;
minMaxLoc(hist, 0, &maxVal, 0, &maxloc);
hls_Img.convertTo(hls_Img, CV_32FC3);
float keycolor_h = float(maxloc.y) / 180.0f;
for (size_t i = 0; i < hls_Img.rows; i++)
{
for (size_t j = 0; j < hls_Img.cols; j++)
{
float deSatuFactor = 3.0f*sinf(2.0f * 3.1415f * (keycolor_h + (0.25f - hls_Img.at<cv::Vec3f>(i, j)[0] / 180.0f))) - 1.5f;
if (deSatuFactor > 1.0f)
{
hls_Img.at<cv::Vec3f>(i, j)[2] = hls_Img.at<cv::Vec3f>(i, j)[2] * (1.0f / (3.0f + deSatuFactor));
}
else if (deSatuFactor>0.7f && deSatuFactor<1.0f)
{
hls_Img.at<cv::Vec3f>(i, j)[2] = hls_Img.at<cv::Vec3f>(i, j)[2] * deSatuFactor;
}
}
}
hls_Img.convertTo(hls_Img, CV_8UC3);
cvtColor(hls_Img, keyedImg, CV_HLS2BGR);
相关文章推荐
- 用GDI+画图像,根据鼠标区域改变填充颜色
- easyUI 根据一些条件改变DataGrid 行背景颜色
- C#如何不根据图像文件扩展名来确定一个图像文件是什么格式
- ReactiveCocoa简介三,根据输入框的条件,改变输入框背景颜色
- RunTime交换两个方法,可以根据特定条件来改变.
- C# WinForm (笨方法)根据不同的样式配置 设置窗体相关控件的背景 以改变窗体风格
- 根据绑定的值的不同改变gridview里某一单元格的字体或背景颜色
- easyUI 根据一些条件改变DataGrid 行背景颜色
- 改变Xcode编码区域背景颜色
- 制作图像素材时,背景图片中的区域位置坐标定位
- 根据序列图像聚焦区域获取深度 Shape From Focus
- C# WinForm (笨方法)根据不同的样式配置 设置窗体相关控件的背景 以改变窗体风格
- android自定义view分区域点击的圆饼图(区域个数比例根据数据源动态改变)
- 相机自动定标(根据不同角度的图像确定相机的参数)
- easyUI 根据一些条件改变DataGrid 行背景颜色
- 根据数据列条件改变行背景
- Android笔记:根据进度代码改变progressbar背景颜色,ClipDrawable,LayerDrawable,setProgressDrawable
- c#图像处理、图片拼接、图片裁剪、图片缩放、图上添加形状、屏幕截图、图片反色、改变图片色彩度全解
- 通过RGB或YUV改变图像的色度和饱和度
- PHP根据传来的16进制颜色代码自动改变背景颜色