本章介绍灰度阈值变换的基本原理和实现方法,它用于产生二值图。
1.基本原理
我觉得不用过多介绍,就是一个普通得不能再普通的二值化操作
2.代码实现(代码是我以前自学图像处理时写的,代码很粗糙没做任何优化,但很好理解)
此代码中“origiin”一般为灰度图片,彩色图片转灰度图片,可参考我的一篇博客:彩色图转灰度图之c++实现(qt + 不调包)
/*灰度阈值变化函数*/
/*thr 为阈值*/
QImage* MainWindow::ThrTrans(QImage* origiin, int thr)
{
QImage* newImage = new QImage(origiin->width(), origiin->height(), QImage::Format_ARGB32);
QColor oldColor;
int r, g, b;
for(int y = 0; y < newImage->height(); y++)
{
for(int x = 0; x < newImage->width(); x++)
{
oldColor = QColor(origiin->pixel(x,y));
if(oldColor.red() >= thr)
r = 255;
else
r = 0;
if(oldColor.green() >= thr)
g = 255;
else
g = 0;
if(oldColor.blue()>= thr)
b = 255;
else
b = 0;
newImage->setPixel(x, y, qRgb(r, g, b));
}
}
return newImage;
}
3.参考资料:
数字图像处理——技术详解与Visual C++实践(左飞等著),写代码与写博客的时间相差两年,至于还参考其他的资料不,我已经忘记了,如若需要,我可以补上去