高分求锐化图像原码,c语言版,分不够再加

cyberarmao 2002-11-20 11:49:48
我才开始学图像处理,希望各位多帮忙!
...全文
106 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
tsingmei 2002-11-22
  • 打赏
  • 举报
回复
上面的代码全是人民邮电出版社的《VC++数字图象处理》光盘里面的。
你要找我好了!我有的是。
duwenyong 2002-11-22
  • 打赏
  • 举报
回复
http://member.netease.com/~inetsoft/downloads/sourcecode/graph/index.htm
changzhiguo 2002-11-20
  • 打赏
  • 举报
回复
/*************************************************************************
*
* 函数名称:
* GradSharp()
*
* 参数:
* LPSTR lpDIBBits - 指向源DIB图像指针
* LONG lWidth - 源图像宽度(象素数)
* LONG lHeight - 源图像高度(象素数)
* BYTE bThre - 阈值
*
* 返回值:
* BOOL - 成功返回TRUE,否则返回FALSE。
*
* 说明:
* 该函数用来对图像进行梯度锐化。
*
************************************************************************/
BOOL WINAPI GradSharp(LPSTR lpDIBBits, LONG lWidth, LONG lHeight, BYTE bThre)
{

// 指向源图像的指针
unsigned char* lpSrc;
unsigned char* lpSrc1;
unsigned char* lpSrc2;

// 循环变量
LONG i;
LONG j;

// 图像每行的字节数
LONG lLineBytes;

// 中间变量
BYTE bTemp;

// 计算图像每行的字节数
lLineBytes = WIDTHBYTES(lWidth * 8);

// 每行
lpSrc = lpDIBBits;
lpSrc1 = lpSrc + lLineBytes;
lpSrc2 = lpSrc + 1;
for(i = 0; i < lHeight; i++)
{
// 每列
for(j = 0; j < lWidth; j++)
{
bTemp = abs((*lpSrc)-(*lpSrc1++)) + abs((*lpSrc)-(*lpSrc2++));
lpSrc++;
// 判断是否小于阈值
if (bTemp < 255)
{
// 判断是否大于阈值,对于小于情况,灰度值不变。
if (bTemp >= bThre)
{
// 直接赋值为bTemp
*lpSrc = bTemp;
}
}
else
{
// 直接赋值为255
*lpSrc = 255;
}
}
}

// 返回
return TRUE;
}
cyberarmao 2002-11-20
  • 打赏
  • 举报
回复
那就增加点内容,锐化->二值化后->再得到目标的坐标,
司马青衫依旧 2002-11-20
  • 打赏
  • 举报
回复
上面的好像是《VC++数字图像处理》上的。
yuga 2002-11-20
  • 打赏
  • 举报
回复
/*************************************************************************
*
* 函数名称:
* GradSharp()
*
* 参数:
* LPSTR lpDIBBits - 指向源DIB图像指针
* LONG lWidth - 源图像宽度(象素数)
* LONG lHeight - 源图像高度(象素数)
* BYTE bThre - 阈值
*
* 返回值:
* BOOL - 成功返回TRUE,否则返回FALSE。
*
* 说明:
* 该函数用来对图像进行梯度锐化。
*
************************************************************************/
BOOL WINAPI GradSharp(LPSTR lpDIBBits, LONG lWidth, LONG lHeight, BYTE bThre)
{

// 指向源图像的指针
unsigned char* lpSrc;
unsigned char* lpSrc1;
unsigned char* lpSrc2;

// 循环变量
LONG i;
LONG j;

// 图像每行的字节数
LONG lLineBytes;

// 中间变量
BYTE bTemp;

// 计算图像每行的字节数
lLineBytes = WIDTHBYTES(lWidth * 8);

// 每行
for(i = 0; i < lHeight; i++)
{
// 每列
for(j = 0; j < lWidth; j++)
{
// 指向DIB第i行,第j个象素的指针
lpSrc = (unsigned char*)lpDIBBits + lLineBytes * (lHeight - 1 - i) + j;

// 指向DIB第i+1行,第j个象素的指针
lpSrc1 = (unsigned char*)lpDIBBits + lLineBytes * (lHeight - 2 - i) + j;

// 指向DIB第i行,第j+1个象素的指针
lpSrc2 = (unsigned char*)lpDIBBits + lLineBytes * (lHeight - 1 - i) + j + 1;

bTemp = abs((*lpSrc)-(*lpSrc1)) + abs((*lpSrc)-(*lpSrc2));

// 判断是否小于阈值
if (bTemp < 255)
{
// 判断是否大于阈值,对于小于情况,灰度值不变。
if (bTemp >= bThre)
{
// 直接赋值为bTemp
*lpSrc = bTemp;
}
}
else
{
// 直接赋值为255
*lpSrc = 255;
}
}
}

// 返回
return TRUE;
}

4,446

社区成员

发帖
与我相关
我的任务
社区描述
图形图像/机器视觉
社区管理员
  • 机器视觉
  • 迪菲赫尔曼
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧