本文目录一览:

如何进行数字图像处理中的膨胀和腐蚀计算

腐蚀的算法:

用3x3的结构元素,扫描图像的每一个像素

用结构元素与其覆盖的二值图像做“与”操作

如果都为1,结果图像的该像素为1。否则为0。

结果:使二值图像减小一圈

定义:E = B  S = { x,y | SxyB}

膨胀的算法:

用3x3的结构元素,扫描图像的每一个像素

用结构元素与其覆盖的二值图像做“与”操作

如果都为0,结果图像的该像素为0。否则为1

结果:使二值图像扩大一圈

定义:E = B  S = { x,y | Sxy∩B ≠Ф}

膨胀源码

BOOL Dilation(HWND hWnd,BOOL Hori)

{

DWORD OffBits,BufSize;

LPBITMAPINFOHEADER lpImgData;

LPSTR lpPtr;

HLOCAL hTempImgData;

LPBITMAPINFOHEADER lpTempImgData;

LPSTR lpTempPtr;

HDC hDc;

HFILE hf;

LONG x,y;

unsigned char num;

int i;

//为了处理的方便,仍采用256级灰度图,不过只调色板中0和255两项

if( NumColors!=256){

MessageBox(hWnd,"Must be a mono bitmap with grayscale palette!",

"Error Message",MB_OK|MB_ICONEXCLAMATION);

return FALSE;

}

OffBits=bf.bfOffBits-sizeof(BITMAPFILEHEADER);

//BufSize为缓冲区大小

BufSize=OffBits+bi.biHeight*LineBytes;

//为新的缓冲区分配内存

if((hTempImgData=LocalAlloc(LHND,BufSize))==NULL)

{

MessageBox(hWnd,"Error alloc memory!","Error Message",

MB_OK|MB_ICONEXCLAMATION);

return FALSE;

}

lpImgData=(LPBITMAPINFOHEADER)GlobalLock(hImgData);

lpTempImgData=(LPBITMAPINFOHEADER)LocalLock(hTempImgData);

//拷贝头信息和位图数据

memcpy(lpTempImgData,lpImgData,BufSize);

if(Hori)

{

//在水平方向进行膨胀运算

for(y=0;ybi.biHeight;y++){

//lpPtr指向原图数据,lpTempPtr指向新图数据

lpPtr=(char *)lpImgData+(BufSize-LineBytes-y*LineBytes)+1;

lpTempPtr=(char*)lpTempImgData+

(BufSize-LineBytes-y*LineBytes)+1;

for(x=1;xbi.biWidth-1;x++){

//注意为防止越界,x的范围从1到宽度-2

num=(unsigned char)*lpPtr;

//原图中是黑点的,新图中肯定也是,所以要考虑的是那些原图

//中的白点,看是否有可能膨胀成黑点

if (num==255){

*lpTempPtr=(unsigned char)255; //先置成白点

for(i=0;i3;i++){

num=(unsigned char)*(lpPtr+i-1);

//只要左右邻居中有一个是黑点,就膨胀成黑点

if(num==0){

*lpTempPtr=(unsigned char)0;

break;

}

}

}

//原图中就是黑点的,新图中仍是黑点

else *lpTempPtr=(unsigned char)0;

//指向下一个象素

lpPtr++;

lpTempPtr++;

}

}

}

else{

//在垂直方向进行腐蚀运算

for(y=1;ybi.biHeight-1;y++){ //注意为防止越界,y的范围从1到高度-2

lpPtr=(char *)lpImgData+(BufSize-LineBytes-y*LineBytes);

lpTempPtr=(char *)lpTempImgData+(BufSize-LineBytes-y*LineBytes);

for(x=0;xbi.biWidth;x++){

num=(unsigned char)*lpPtr;

if (num==255){

*lpTempPtr=(unsigned char)255;

for(i=0;i3;i++){

num=(unsigned char)*(lpPtr+(i-1)*LineBytes);

//只要上下邻居中有一个是黑点,就膨胀成黑点

if(num==0){

*lpTempPtr=(unsigned char)0;

break;

}

}

}

else *lpTempPtr=(unsigned char)0;

lpPtr++;

lpTempPtr++;

}

}

}

if(hBitmap!=NULL)

DeleteObject(hBitmap);

hDc=GetDC(hWnd);

//产生新的位图

hBitmap=CreateDIBitmap(hDc,(LPBITMAPINFOHEADER)lpTempImgData,

(LONG)CBM_INIT,

(LPSTR)lpTempImgData+

sizeof(BITMAPINFOHEADER)+

NumColors*sizeof(RGBQUAD),

(LPBITMAPINFO)lpTempImgData,

DIB_RGB_COLORS);

//起不同的结果文件名

if(Hori)

hf=_lcreat("c://hdilation.bmp",0);

else

hf=_lcreat("c://vdilation.bmp",0);

_lwrite(hf,(LPSTR)bf,sizeof(BITMAPFILEHEADER));

_lwrite(hf,(LPSTR)lpTempImgData,BufSize);

_lclose(hf);

//释放内存及资源

ReleaseDC(hWnd,hDc);

LocalUnlock(hTempImgData);

LocalFree(hTempImgData);

GlobalUnlock(hImgData);

return TRUE;

}

腐蚀源码

BOOL Erosion(HWND hWnd,BOOL Hori)

{

DWORD OffBits,BufSize;

LPBITMAPINFOHEADER lpImgData;

LPSTR lpPtr;

HLOCAL hTempImgData;

LPBITMAPINFOHEADER lpTempImgData;

LPSTR lpTempPtr;

HDC hDc;

HFILE hf;

LONG x,y;

unsigned char num;

int i;

//为了处理方便,仍采用256级灰度图,不过只用调色板中0和255两项

if( NumColors!=256){

MessageBox(hWnd,"Must be a mono bitmap with grayscale palette!",

"Error Message",MB_OK|MB_ICONEXCLAMATION);

return FALSE;

}

OffBits=bf.bfOffBits-sizeof(BITMAPFILEHEADER);

//BufSize为缓冲区大小

BufSize=OffBits+bi.biHeight*LineBytes;

//为新的缓冲区分配内存

if((hTempImgData=LocalAlloc(LHND,BufSize))==NULL)

{

MessageBox(hWnd,"Error alloc memory!","Error Message",

MB_OK|MB_ICONEXCLAMATION);

return FALSE;

}

lpImgData=(LPBITMAPINFOHEADER)GlobalLock(hImgData);

lpTempImgData=(LPBITMAPINFOHEADER)LocalLock(hTempImgData);

//拷贝头信息和位图数据

memcpy(lpTempImgData,lpImgData,BufSize);

if(Hori)

{

//在水平方向进行腐蚀运算

for(y=0;ybi.biHeight;y++){

//lpPtr指向原图数据,lpTempPtr指向新图数据

lpPtr=(char *)lpImgData+(BufSize-LineBytes-y*LineBytes)+1;

lpTempPtr=(char*)lpTempImgData+

(BufSize-LineBytes-y*LineBytes)+1;

for(x=1;xbi.biWidth-1;x++){

//注意为防止越界,x的范围从1到宽度-2

num=(unsigned char)*lpPtr;

if (num==0){ //因为腐蚀掉的是黑点,所以只对黑点处理

*lpTempPtr=(unsigned char)0; //先置成黑点

for(i=0;i3;i++){

num=(unsigned char)*(lpPtr+i-1);

if(num==255){

//自身及上下邻居中若有一个不是黑点,则将该点腐

//蚀成白点

*lpTempPtr=(unsigned char)255;

break;

}

}

}

//原图中就是白点的,新图中仍是白点

else *lpTempPtr=(unsigned char)255;

//指向下一个象素

lpPtr++;

lpTempPtr++;

}

}

}

else{

//在垂直方向进行腐蚀运算

for(y=1;ybi.biHeight-1;y++){ //注意为防止越界,y的范围从1到高度-2

//lpPtr指向原图数据,lpTempPtr指向新图数据

lpPtr=(char *)lpImgData+(BufSize-LineBytes-y*LineBytes);

lpTempPtr=(char *)lpTempImgData+(BufSize-LineBytes-y*LineBytes);

for(x=0;xbi.biWidth;x++){

num=(unsigned char)*lpPtr;

if (num==0){ //因为腐蚀掉的是黑点,所以只对黑点处理

*lpTempPtr=(unsigned char)0; //先置成黑点

for(i=0;i3;i++){

num=(unsigned char)*(lpPtr+(i-1)*LineBytes);

if(num==255){

//自身及上下邻居中若有一个不是黑点,则将该点腐

//蚀成白点

*lpTempPtr=(unsigned char)255;

break;

}

}

}

//原图中就是白点的,新图中仍是白点

else *lpTempPtr=(unsigned char)255;

//指向下一个象素

lpPtr++;

lpTempPtr++;

}

}

}

if(hBitmap!=NULL)

DeleteObject(hBitmap);

hDc=GetDC(hWnd);

//产生新的位图

hBitmap=CreateDIBitmap(hDc,(LPBITMAPINFOHEADER)lpTempImgData,

(LONG)CBM_INIT,

(LPSTR)lpTempImgData+

sizeof(BITMAPINFOHEADER)+

NumColors*sizeof(RGBQUAD),

(LPBITMAPINFO)lpTempImgData, DIB_RGB_COLORS);

//起不同的结果文件名

if(Hori)

hf=_lcreat("c://herosion.bmp",0);

else

hf=_lcreat("c://verosion.bmp",0);

_lwrite(hf,(LPSTR)bf,sizeof(BITMAPFILEHEADER));

_lwrite(hf,(LPSTR)lpTempImgData,BufSize);

_lclose(hf);

//释放内存及资源

ReleaseDC(hWnd,hDc);

LocalUnlock(hTempImgData);

LocalFree(hTempImgData);

GlobalUnlock(hImgData);

return TRUE;

}

哪有数字图像处理(冈萨雷斯MATLAB版)中文ppt

给你两本,一本是matlab版,另一本是中文版,都是冈萨雷斯的,这个学期已经学完了啊。

新媒体技术专业怎么样

新媒体可以做以下工作

第一:初级新媒体运营专员

我们熟知的新媒体运营,一般分为初级,中级和高阶。初级新媒体运营有很多,一般都是公司的新媒体运营专员。初级的新媒体运营分为两个方向,一个方向是偏内容编辑,也就是文案小编。另外一个方向偏向于营销,也就是运营或者策划。

一般的新媒体运营专员,基础都要有一定的原创能力,也就是文字撰写的能力。负责公司单个或多个媒体平台的日常发布和运营,对工作经验要求并不多,但也要有一定的作品和案例。在郑州这样的二线城市,薪资一般是4k~6k不等。

我自己当时刚毕业出来工作就是做的新媒体运营专员,负责的是客户的运营策划方案,对PPT的撰写能力要求比较高。但新媒体运营专员的工作任务来说,工作还是比较轻松简单的。

第二:中级新媒体运营

专业的新媒体运营,一般都是有一定的工作经验,对一些常用的平台,有一定的认知和理解。例如:我自己除了微信,微博日常的更新运营工作,其次我对今日头条和百度,抖音的运营规则有一定深刻的理解,同时在这些平台上,操作过一定的成功案例。

专业的新媒体运营,无论在文案的撰写能力,还是在媒体平台的运营规则,都要比新媒体运营专员,要提升一个等级。

例如:在郑州专业的新媒体运营,一般薪酬是5k到8k不等,一般都需要1~2年的工作经验。专业的新媒体运营在小公司里都是负责一个项目组,但在大公司可能还是在比较基础的岗位工作。因为我们公司比较小,我就负责我们公司的全栈运营,就是公司全媒体平台运营策划的简称。关于公司内容产品的定位,以及对外发布的内容媒介平台选择,基本上都是由我来决定。同时也担任新媒体运营板块的讲师,教授想从事新媒体运营的同学们,带他们实训项目等等,如果你想学欢迎留言咨询。

第三:高阶新媒体运营总监

高阶新媒体运营,一般都是内容总监级别或者营销总监级别,是从内容小编和运营小白一步步成长起来的。要想达到这个级别,一般需要5~8年不等,但因个人努力程度不一,时间也不尽相同。

我身边的高阶新媒体运营总监并不多,一般他们都是项目操盘手。在大公司一般是总监级别,但在小公司一般是联合创始人,对他们的要求能力很高。首先要在这个行业领域有深刻的认知,同时能够根据公司的战略目标,做好品牌的宣传和各种公关事宜。他们要有整体的把控能力,对各个媒体平台有深入的认知,还要有丰富的操盘经验和媒体资源。

例如:在郑州高阶新媒体运营人才并不多,岗位薪酬一般都是在8K+甚至更高。

新媒体运营是做什么的?具体的工作职责是什么?每个阶段职责都不一样,如果你感兴趣想学习欢迎留言咨询。我将免费分享我的新媒体运营的培训课件,带你实操项目少走弯路,更快成为一名合格的新媒体运营人员。

初级新媒体运营专员,主要是负责公司单个平台的内容发布,策划活动等。中级新媒体运营组长,一般负责公司各个媒体平台和整体运维工作。高阶新媒体运营总监,一般是负责公司整个品宣与公告,操盘公司项目等。

大学老师关于数字图像处理方面的试讲

不用深度,只要清楚就行,把最基本的理论讲清楚就行,我们老师就是这么讲解的,最好做个ppt,如果和数学公式有关的应该笔书,不要ppt放过去,最难将的应该是傅里叶变换那,希望你不要碰到讲那个,别的都还好说,祝你成功。

自己做一个数字图像处理的ppt,3张,【matlab】,怎么破?

处理过程图上 取一个子区域讲解一下滤波过程,这样更形象些。