更新答题卡除红算法,解决答题卡除红会除掉绿色和橙色等颜色
This commit is contained in:
parent
cfb1431efd
commit
7de2077960
|
@ -1,18 +1,36 @@
|
||||||
#include "ImageApplyHSVCorrect.h"
|
#include "ImageApplyHSVCorrect.h"
|
||||||
#include <omp.h>
|
#include <omp.h>
|
||||||
|
|
||||||
CImageApplyHSVCorrect::CImageApplyHSVCorrect(CorrectOption mode, bool cvtColor, uint bgr)
|
CImageApplyHSVCorrect::CImageApplyHSVCorrect(CorrectOption mode, bool cvtColor, uint bgr, uint alpha)
|
||||||
: m_table(new uint[256 * 256 * 256])
|
: m_table(new uint[256 * 256 * 256])
|
||||||
{
|
{
|
||||||
initLUT();
|
initLUT();
|
||||||
|
uint temp;
|
||||||
switch (mode)
|
switch (mode)
|
||||||
{
|
{
|
||||||
case CImageApplyHSVCorrect::Red_Removal:
|
case CImageApplyHSVCorrect::Red_Removal:
|
||||||
set_HSV_value(std::pair<uchar, uchar>(0, 63), std::pair<uchar, uchar>(30, 255), std::pair<uchar, uchar>(120, 255), bgr, cvtColor);
|
set_HSV_value(std::pair<uchar, uchar>(0, 10), std::pair<uchar, uchar>(30, 255), std::pair<uchar, uchar>(120, 255), bgr, cvtColor);
|
||||||
set_HSV_value(std::pair<uchar, uchar>(200, 255), std::pair<uchar, uchar>(30, 255), std::pair<uchar, uchar>(120, 255), bgr, cvtColor);
|
set_HSV_value(std::pair<uchar, uchar>(200, 255), std::pair<uchar, uchar>(30, 255), std::pair<uchar, uchar>(120, 255), bgr, cvtColor);
|
||||||
break;
|
break;
|
||||||
case CImageApplyHSVCorrect::LowSaturation_Removal:
|
case CImageApplyHSVCorrect::LowSaturation_Removal:
|
||||||
set_HSV_value(std::pair<uchar, uchar>(0, 255), std::pair<uchar, uchar>(0, 30), std::pair<uchar, uchar>(0, 255), bgr, cvtColor);
|
if (alpha < 0)
|
||||||
|
temp = 35;
|
||||||
|
else
|
||||||
|
temp = alpha;
|
||||||
|
set_HSV_value(std::pair<uchar, uchar>(0, 255), std::pair<uchar, uchar>(0, temp), std::pair<uchar, uchar>(0, 255), bgr, cvtColor);
|
||||||
|
break;
|
||||||
|
case CImageApplyHSVCorrect::FXB_Color_Cast:
|
||||||
|
set_HSV_value(std::pair<uchar, uchar>(45, 105), std::pair<uchar, uchar>(0, 255), std::pair<uchar, uchar>(0, 255), 0x00FFFFFF, true);
|
||||||
|
set_HSV_value(std::pair<uchar, uchar>(180, 235), std::pair<uchar, uchar>(0, 255), std::pair<uchar, uchar>(0, 255), 0x00FFFFFF, true);
|
||||||
|
set_HSV_value(std::pair<uchar, uchar>(0, 30), std::pair<uchar, uchar>(0, 50), std::pair<uchar, uchar>(0, 255), 0x00FFFFFF, true);
|
||||||
|
break;
|
||||||
|
case CImageApplyHSVCorrect::LM_Color_Cast:
|
||||||
|
set_HSV_value(std::pair<uchar, uchar>(45, 105), std::pair<uchar, uchar>(0, 255), std::pair<uchar, uchar>(0, 255), 0x00FFFFFF, true);
|
||||||
|
set_HSV_value(std::pair<uchar, uchar>(180, 235), std::pair<uchar, uchar>(0, 100), std::pair<uchar, uchar>(0, 255), 0x00FFFFFF, true);
|
||||||
|
set_HSV_value(std::pair<uchar, uchar>(0, 30), std::pair<uchar, uchar>(0, 60), std::pair<uchar, uchar>(0, 255), 0x00FFFFFF, true);
|
||||||
|
break;
|
||||||
|
case CImageApplyHSVCorrect::RESERVE_RED:
|
||||||
|
set_HSV_value(std::pair<uchar, uchar>(45, 220), std::pair<uchar, uchar>(0, 255), std::pair<uchar, uchar>(0, 255), 0x00FFFFFF, true);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
|
@ -149,7 +167,7 @@ void CImageApplyHSVCorrect::RGB_2_HSV_full(int r, int g, int b, uchar& h, uchar&
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
s = static_cast<uchar>(delta * 255 / maxx);
|
s = delta;
|
||||||
|
|
||||||
if (r == maxx)
|
if (r == maxx)
|
||||||
_h = static_cast<float>(g - b) / static_cast<float>(delta);
|
_h = static_cast<float>(g - b) / static_cast<float>(delta);
|
||||||
|
|
|
@ -11,7 +11,12 @@
|
||||||
v1.4 2022/04/22 增加功能,支持用像素灰度值填充原来彩色像素;删除默认构造函数;增加校正选项Deafault和LowSaturation_Removal
|
v1.4 2022/04/22 增加功能,支持用像素灰度值填充原来彩色像素;删除默认构造函数;增加校正选项Deafault和LowSaturation_Removal
|
||||||
v1.4.1 2022/04/25 调整数据类型,避免数据访问越界。
|
v1.4.1 2022/04/25 调整数据类型,避免数据访问越界。
|
||||||
v1.4.2 2022/06/09 修复一个内存大小的错误。
|
v1.4.2 2022/06/09 修复一个内存大小的错误。
|
||||||
* 版本号:v1.4.2
|
v1.5 2022/08/22 调整饱和度计算方式;构造函数增加参数alpha,用于微调部分模式的参数。
|
||||||
|
v1.5.1 2022/09/23 添加风向标除偏色预设方案
|
||||||
|
v1.5.2 2022/10/26 添加鹿鸣除偏色预设方案
|
||||||
|
v1.5.3 2023/03/22 添加保留红色像素预设方案
|
||||||
|
v1.5.4 2023/12/01 微调除红H范围
|
||||||
|
* 版本号:v1.5.4
|
||||||
*
|
*
|
||||||
* ====================================================
|
* ====================================================
|
||||||
*/
|
*/
|
||||||
|
@ -26,17 +31,21 @@ class GIMGPROC_LIBRARY_API CImageApplyHSVCorrect : public CImageApply
|
||||||
public:
|
public:
|
||||||
enum CorrectOption
|
enum CorrectOption
|
||||||
{
|
{
|
||||||
Deafault, //默认,无任何除色效果
|
Default, //默认,无任何除色效果
|
||||||
LowSaturation_Removal, //除掉低饱和度像素
|
LowSaturation_Removal, //除掉低饱和度像素
|
||||||
Red_Removal //除掉红色。红色定义H:[0, 85]∪[170, 255],S:[10, 255],V:[120,255]
|
Red_Removal, //除掉红色。红色定义H:[0, 85]∪[170, 255],S:[10, 255],V:[120,255]
|
||||||
|
FXB_Color_Cast, //风向标消除偏色
|
||||||
|
LM_Color_Cast, //鹿鸣消除偏色
|
||||||
|
RESERVE_RED //保留红色像素
|
||||||
};
|
};
|
||||||
public:
|
public:
|
||||||
/*
|
/*
|
||||||
* mode [in]:预设初色模式
|
* mode [in]:预设初色模式
|
||||||
* cvtColor [in]:替代像素使用默认值,还是使用灰度值。true为灰度值,false为默认值
|
* cvtColor [in]:替代像素使用默认值,还是使用灰度值。true为灰度值,false为默认值
|
||||||
* bgr:[in] 用uint表示BGR值,B在低位,R在高位。(当cvtGray 为false时生效)
|
* bgr [in] 用uint表示BGR值,B在低位,R在高位。(当cvtGray 为false时生效)
|
||||||
|
* alpha [int] 用于调整LowSaturation_Removal模式的强度。当alpha为负时,饱和度区间默认为[0, 35];当alpha为非负时,饱和度区间为[0, alpha]。
|
||||||
*/
|
*/
|
||||||
CImageApplyHSVCorrect(CorrectOption mode = CorrectOption::Deafault, bool cvtColor = false, uint bgr = 0x00FFFFFF);
|
CImageApplyHSVCorrect(CorrectOption mode = CorrectOption::Default, bool cvtColor = false, uint bgr = 0x00FFFFFF, uint alpha = -1);
|
||||||
|
|
||||||
virtual ~CImageApplyHSVCorrect();
|
virtual ~CImageApplyHSVCorrect();
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue