灰度图像阀值变换
基本公式
f(x) = 0 ( x < T)
f(x) = 255 (x>=T) T为给定的阀值
VC代码:
当图像的像素点的灰度大于T的时候,设置这个点为全黑,要不然为全白。这样可以只选择我们感兴趣的领域。
一下代码转自数字图像与机器视觉:
void CImgProcess::Threshold(CImgProcess *pTo, BYTE bThre)
{
int i, j;
BYTE bt;
for(j = 0; j < m_pBMIH->biHeight; j ++)
{
for(i=0; i<m_pBMIH->biWidth; i++)
{
bt = GetGray(i, j);
if(bt<bThre)
bt = 0;
else
bt = 255;
pTo->SetPixel(i, j, RGB(bt, bt, bt));
}
}
}
相应的matlab代码:
I = imread('rice.png);
thresh = graythresh(I);//自适应设置阀值
bw1 = im2bw(I, thresh);
bw2 = im2bw(I, 130/255);//手工设置阀值
subplot(1,3,1);imshow(I);
subplot(1,3,2);imshow(bw1);
subplot(1,3,3);imshow(bw2);