图像锐化

god81 2008-12-17 06:38:32
拉普拉斯锐化,但是效果不对,请教各位大虾,谢谢!

void CBmpShowView::OnLaplaciansharp()
{
// TODO: Add your command handler code here
CBmpShowDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
ImgWidth = pDoc->nImgWidth;
ImgHeight = pDoc->nImgHeight;

LPBYTE lpDIBHdr;
LPBYTE lpDIBBits;
int i,j;

HPALETTE hOldPal = NULL;
HANDLE hDIB;
hDIB = pDoc->m_hDIB;

if(!hDIB)
return;

lpDIBHdr = (LPBYTE)GlobalLock(hDIB);
lpDIBBits = lpDIBHdr+sizeof(BITMAPINFOHEADER)+DIBNumColors(lpDIBHdr)*sizeof(RGBQUAD);

for(i = 1; i < ImgHeight; i++)
{
// 每列
for(j = 2; j < ImgWidth; j++)
{ int lap[300];
int a,b;
a=*(lpDIBBits+i*ImgWidth+j+1)+*(lpDIBBits+i*ImgWidth+j-1);
b=*(lpDIBBits+(i+1)*ImgWidth+j)+*(lpDIBBits+(i-1)*ImgWidth+j);
lap[i,j]=5*(*(lpDIBBits+i*ImgWidth+j))-(a+b);
*(lpDIBBits+i*ImgWidth+j)=lap[i,j];
//判断是否越界//
if ((*(lpDIBBits+i*ImgWidth+j)) < 0)
{
// 直接赋值为0
*(lpDIBBits+i*ImgWidth+j) = 0;
}
else if (*(lpDIBBits+i*ImgWidth+j) > 255)
{
// 直接赋值为255
*(lpDIBBits+i*ImgWidth+j) = 255;
}

}
}


pDoc->UpdateAllViews(NULL);
}
...全文
155 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
god81 2008-12-20
  • 打赏
  • 举报
回复
兄弟,看来你是来要分的。。。。。。不好意思,我已经解决了,只要新建一个数组来存放已经改变的原图像的像素值。
SearchLife 2008-12-17
  • 打赏
  • 举报
回复
up
太乙 2008-12-17
  • 打赏
  • 举报
回复
upup~~~
foxoon 2008-12-17
  • 打赏
  • 举报
回复
一般图象锐化是针对灰度图象和彩色图象,你先把图象转换成彩色图象再来把,没听说过可以针对索引图象搞锐化的
楼主,给分吧

65,210

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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