已阅读5页,还剩13页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
数字图像处理课程设计实验报告 一、图像显示(OnDraw(CDC* pDC))说明:在图像显示过程中可以有两种显示方法:一种是利用系统内部函数PaintDIB使整幅图像直接显示;另一种是利用打点方法逐点的显示出整幅图像。以下程序中是上述两种方法的结合,最后的结果是第一幅图像为整幅直接显示,另外一幅是逐点打出的图像。void CJUXINGView:OnDraw(CDC* pDC)BeginWaitCursor();CString str;CJUXINGDoc* pDoc = GetDocument();ASSERT_VALID(pDoc);LPSTR lpDIBBits;/ 指向源图像的指针 unsigned char*lpSrc;/获取hDIBHDIB hDIB= pDoc-GetHDIB();/判断hDIB是否为空if(hDIB!=NULL) LPSTR lpDIB=(LPSTR):GlobalLock (HGLOBAL)hDIB);/找到DIB像素起始位置lpDIBBits = :FindDIBBits(lpDIB); / 获取DIB宽度int cxDIB = (int) :DIBWidth(lpDIB);/ 获取DIB高度int cyDIB = (int) :DIBHeight(lpDIB);:GlobalUnlock(HGLOBAL) hDIB);CRect rcDIB;rcDIB.top = rcDIB.left = 0;rcDIB.right = cxDIB;rcDIB.bottom = cyDIB;CRect rcDest;/ 第一种方法:直接显示调用PaintDIB函数:PaintDIB(pDC-m_hDC, &rcDest, pDoc-GetHDIB(),&rcDIB, pDoc-GetDocPalette(); /第二种方法:打点显示 for( i=0;icyDIB;i+)for( j=0;jSetPixel (j,cyDIB-i, RGB(yuanshiij,yuanshiij,yuanshiij);二、灰度直方图说明:编制图像灰度直方图的程序时需要经过以下几个步骤:创立一个显示直方图的对话框定义初始函数定义一些绘制时用到的鼠标控制函数利用画笔绘制直方图显示直方图/创立一个对话框类#include dlgIntensity.hBOOL CdlgIntensity:OnInitDialog() /对话框类初始化函数 / 指向源图像象素的指针 / 获取绘制直方图的标签 / 计算并设置接受鼠标事件的有效区域for (i = 0; i 256; i +)m_lCounti = 0; / m_lCounti为某一灰度值的像素数清零 / 计算各个灰度值的计数for (i = 0; i m_lHeight; i +) /m_lHeight为图像的高for (j = 0; j 下限更改上限 point.x = m_MouseRect.left + m_iLowGray + 1;/否则上限小于下限时重设鼠标位置 绘制直方图后返回void CdlgIntensity:OnPaint() /利用画笔绘制直方图 初始化变量、获取绘制的文本框 pPenRed-CreatePen(PS_SOLID,1,RGB(255,0,0); /创建各色(红、蓝、绿)画笔 pDC-MoveTo(35,10); pDC-LineTo(35,280); pDC-LineTo(325,280); / 绘制坐标轴str.Format(0); pDC-TextOut(35, 283, str); / 每隔50写一次X轴各刻度值pDC-MoveTo(i + 35, 280); pDC-LineTo(i + 35, 284);/ 每隔10绘制一次X轴长刻度pDC-MoveTo(i + 35, 280); pDC-LineTo(i + 35, 282); / 每隔5绘制一次X轴短刻度pDC-MoveTo(320,275); pDC-LineTo(325,280); pDC-LineTo(320,285);/ 绘制X轴箭头 /绘制Y轴刻度、绘制y轴箭头/ 计算最大计数值for (i = m_iLowGray; i lMaxCount) / 判断是否大于当前最大值lMaxCount = m_lCounti; / 更新最大值 maxproba=100*(double)lMaxCount/(256*256); /计算该灰度值下像素点所占的百分率 /在相应的Y轴坐标下显示灰度值的百分率 /更改成绿色画笔绘制窗口上下限 /更改成蓝色画笔绘制直方图 /恢复以前的画笔并删除新的画笔 void CJUXINGView:OnViewIntensity() /显示直方图对话框 / 获取文档、定义变量、找到DIB图像象素起始位置并锁定CdlgIntensity dlgPara; / 创建对话框 / 初始化对话框变量值(指针、长、宽、上下限灰度值)if (dlgPara.DoModal() != IDOK) / 显示对话框,提示用户设定平移量return; / 返回 / 解除锁定 三、图像变换(以傅立叶变换为例)说明:编程过程中首先要建立一个傅立叶变换的库函数,在View类中调用该函数,并显示。#include FreTrans.hBOOL WINAPI Fourier(LPSTR lpDIBBits, LONG lWidth, LONG lHeight ,int *dTempmax,int *dTempmin) 变量初始化complex *TD = new complexw * h; /时域分配内存complex *FD = new complexw * h; /频域分配内存 extern complex *RTF = new complexw * h;/临时分配内存TDj + w * i = complex(*(lpSrc), 0); / DIB第i行,第j个象素的指针赋值给时域for(i = 0; i h; i+)FFT(&TDw * i, &FDw * i, wp); / 对y方向进行快速付立叶变换 TDi + h * j = FDj + w * i; / 保存变换结果for(i = 0; i w; i+)FFT(&TDi * h, &FDi * h, hp); / 对x方向进行快速付立叶变换 for(i = 0; i h; i+)/ 行for(j = 0; j 255) / 判断是否超过255dTemp = 255;/ 对于超过的,直接设置为255 lpSrc = (unsigned char*)lpDIBBits + lLineBytes * (lHeight - 1 - (ih/2 ? i+h/2 : i-h/2) + (jw/2 ? j+w/2 : j-w/2); /将变换后的原点移到中心* (lpSrc) = (BYTE)(dTemp); / 更新源图像 / 删除临时变量并返回 BOOL WINAPI IFourier(LPSTR lpDIBBits,LONG lWidth, LONG lHeight,int ftype, int D1, int D2) 变量初始化complex *TD = new complexw * h;/时域分配内存complex *FD = new complexw * h;/频域分配内存 for(i=0;ih;i+)for(j=0;jw;j+)FDj*h+i=RTFj*h+i; /将正变换的频域值赋值给FD for(i=0;ih;i+)IFFT(&RTFw*i,&TDw*i,wp); /对y方向进行傅立叶反变换 for(i=0;ih;i+)for(j=0;jw;j+)RTFi+h*j=TDj+w*i; /保存变换结果 for(i=0;iw;i+)IFFT(&RTFh*i,&TDh*i,hp); /对x方向进行傅立叶反变换 for(i=0;ih;i+)for(j=0;j 255) / 判断是否超过255dTemp = 255; / 对于超过的,直接设置为255 lpSrc = (unsigned char*)lpDIBBits + lLineBytes * i+j;/反变换后的图像指针* (lpSrc) = (BYTE)(dTemp); / 更新源图像 void CJUXINGView:OnFourier() /View类中调用上述正变换 初始化变量、获取文档、找到DIB起始像素位置,&maxf,&minf为滤波参数/ 调用Fourier()函数进行付立叶变换 :Fourier(lpDIBBit, :DIBWidth(lpDIB), :DIBHeight(lpDIB),&maxf,&minf) for(i=0;i:DIBHeight(lpDIB);i+) for(j=0;j:DIBWidth(lpDIB);j+) fourier1ij=*lpDIBBit;/将图像存入View类的全局变量fourier1ij中 lpDIBBit+; OnDraw(pDC); void CJUXINGView:OnIFourier() /View类中调用上述反变换 初始化变量、获取文档、找到DIB起始像素位置/ 调用Fourier()函数进行付立叶变换其中0,0,0为滤波时的参数,此处无用置零 : IFourier (lpDIBBit, :DIBWidth(lpDIB), :DIBHeight(lpDIB),0,0,0) for(i=0;i:DIBHeight(lpDIB);i+) for(j=0;j:DIBWidth(lpDIB);j+) fourier1ij=*lpDIBBit;/将图像存入View类的全局变量fourier1ij中 lpDIBBit+; OnDraw(pDC); void CJUXINGView:OnDraw(CDC* pDC) /打点显示变换后频谱图 初始化变量 for( i=0;icyDIB;i+)for( j=0;jSetPixel (j,cyDIB-i,RGB(yuanshiij,yuanshiij,yuanshiij); /显示傅立叶变换频谱图或反变换图像 pDC-SetPixel(j+330,cyDIB-i,RGB(fourier1ij,fourier1ij,fourier1ij); 四、图像增强一) 空域变换增强1、图像线性动态变换说明:对于灰度图,可以以点为单位对图像进行处理,该方法就是将图像中所有点的灰度按照线性变换函数进行变换。该函数是一个一维线性函数:f(x)= fA x+ fB 其中fA为斜率,fB为在y轴的截距。首先创建一个线性变换函数LinerTrans,在该函数中加入变换公式,再将变换后的图像指针传入View类的OnLinertrans函数中,经调用该函数显示变换结果,该变换可以依据人的具体要求调节fA、fB的值以改变图像质量,因此在上述工作之前应先建立一个人机交互的对话框。void CDlgLinerPara:OnLButtonDown(UINT nFlags, CPoint point) /鼠标按下命令if(m_MouseRect.PtInRect(point) / 判断是否在接受鼠标事件的有效区域中m_p1=point;m_p1.x=m_p1.x-m_MouseRect.left +35; /转换坐标系(起点) m_p1.y=m_p1.y-m_MouseRect.top +25; /设置拖动状态、更改光标 SetCapture();/开始跟踪鼠标事件(保证当鼠标移动到窗体外时也可以接收到鼠标释放事件) void CDlgLinerPara:OnLButtonUp(UINT nFlags, CPoint point) /鼠标释放命令 if (m_bIsDraging)/ 当用户释放鼠标左键停止拖动if(m_MouseRect.PtInRect(point) / 判断当前光标是否在绘制区域 保存当前鼠标位置m_p2.x = m_p2.x - m_MouseRect.left + 10; / 转换坐标系(终点)m_p2.y = m_p2.y - m_MouseRect.top + 25;m_fA = (float) (m_p2.y - m_p1.y) / (m_p2.x - m_p1.x); / 计算斜率和截距m_fB = m_p1.y - m_fA * m_p1.x;UpdateData(FALSE);/ 保存变动 :ReleaseCapture();/ 解除对鼠标事件的跟踪 重置拖动状态 void CDlgLinerPara:OnMouseMove(UINT nFlags, CPoint point) /移动鼠标命令if(m_MouseRect.PtInRect(point)/ 判断当前光标是否在绘制区域 :SetCursor(:LoadCursor(NULL, IDC_CROSS); /更改光标 if (m_bIsDraging) / 判断是否正在拖动 获取绘图的标签、设备上下文、创建并选中新的画笔m_p2 = point; / 保存当前的坐标m_p2.x = m_p2.x - m_MouseRect.left + 10; / 转换坐标系m_p2.y = m_p2.y - m_MouseRect.top + 25;pDC-MoveTo(m_p1); / 绘制一条新橡皮筋线pDC-LineTo(m_p2); BOOL CDlgLinerPara:OnInitDialog() /对话框函数初始化 获取绘制直方图的标签、计算并设置接受鼠标事件的有效区域m_bIsDraging = FALSE; / 初始化拖动状态 返回 void CDlgLinerPara:OnPaint() /绘制对话框中的坐标轴并计算直线与坐标轴的交点 初始化、获取绘制坐标的文本框、创建画笔对象(红色、兰色)pDC-MoveTo(10,10); / 绘制坐标轴pDC-LineTo(10,280); / 垂直轴pDC-LineTo(300,280); / 水平轴str.Format(0); pDC-TextOut(10, 281, str);/ 写坐标str.Format(255); pDC-TextOut(265, 281, str); pDC-TextOut(11, 25, str); pDC-MoveTo(295,275); pDC-LineTo(300,280); pDC-LineTo(295,285); / 绘制X轴箭头pDC-MoveTo(10,10);pDC-LineTo(5,15); / 绘制Y轴箭头pDC-MoveTo(10,10);pDC-LineTo(15,15); if (m_fA = 0) / 计算直线和坐标轴二个交点坐标if (m_fA * 255 + m_fB) = 0) & (m_fB 255)if (m_fB 255) / y2超出上限范围255时,计算(x2, y2)坐标x2 = (int) (255- m_fB)/m_fA + 0.5); y2 = 255; else x2 = 255; y2 = (int) (255* m_fA + m_fB + 0.5); else if(m_fA * 255 + m_fB) 0) & (255* m_fA + m_fB 255) / 计算(x1, y1)坐标 x1 = (int) (255- m_fB)/m_fA + 0.5); y1 = 255; else x1 = 0; y1 = (int) (m_fB + 0.5); if (m_fA * 255 + m_fB) 0) / 计算(x2, y2)坐标 x2 = (int) (- m_fB/m_fA + 0.5); y2 = 0; else x2 = 255; y2 = (int) (255* m_fA + m_fB + 0.5); else if (m_fB =0)x1 = 0; y1 = 0; x2 = 255; y2 = 0;/ 转换后所有象素值都小于0,直接设置为0elsex1=0;y1=255;x2=255;y2=255;/ 转换后所有象素值都大于255,直接设置为255 绘制坐标值、绘制用户指定的线性变换直线、恢复以前的画笔、绘制边缘 #include BitOperation.h /空域增强函数库BOOL WINAPI LinerTrans(LPSTR lpDIBBits,LONG lWidth ,LONG lHeight,FLOAT fA,FLOAT fB) 初始化for(i=0;ilHeight;i+) /计算for(j=0;j255) /判断灰度值是否超出范围 *lpSrc=255; else if(fTemp0) *lpSrc=0; else *lpSrc=(unsigned char)(fTemp+0.5); /灰度值四舍五入 返回 void CJUXINGView:OnLinertrans() /View类显示函数 初始化、调用对话框 /调用LinerTrans()函数进行线性变换LinerTrans(lpDIBBits,:DIBWidth (lpDIB),:DIBHeight (lpDIB),fA,fB); 更新视图、解除锁定 2、灰度均衡这个方法的思想是把原始图的直方图变换为均匀分布的形式,这样就增加了像素灰度值的动态范围从而达到增强图像整体对比度的效果。编程过程中,首先建立一个灰度均衡化的库函数,在View类中直接调用该函数即可。BOOL WINAPI InteEqualize(LPSTR lpDIBBits, LONG lWidth, LONG lHeight) /均衡化库函数 初始化、将计数器lCounti清零for (i = 0; i lHeight; i +)/ 计算各个灰度值的计数for (j = 0; j lWidth; j +)lpSrc = (unsigned char *)lpDIBBits + lLineBytes * i + j;/找到该像素指针lCount*(lpSrc)+; / 计数加1 for (i = 0; i 256; i+)/ 计算灰度映射表lTemp = 0; / 初始为0for (j = 0; j = i ; j+) lTemp += lCountj; bMapi = (BYTE) (lTemp * 255 / lHeight / lWidth); / 计算对应的新灰度值for(i = 0; i lHeight; i+)/ 每行for(j = 0; j 1)来改善。同理可以处理图像灰度集中在较亮的区域。编程时首先建立一个灰度拉伸对话框,然后建立库函数(#include DlgGrayStretch.h),最后在View类中调用库函数并实现显示。具体编制过程类似于图像线性变化过程。void CDlgGrayStretch:OnLButtonDown(UINT nFlags, CPoint point) /鼠标按下控制程序if(m_MouseRect.PtInRect(point) / 当用户单击鼠标左键开始拖动CRectrectTemp;rectTemp.left = m_MouseRect.left + m_bX1 - 2; / 计算点1临近区域rectTemp.right = m_MouseRect.left + m_bX1 + 2;rectTemp.top = 255 + m_MouseRect.top - m_bY1 - 2;rectTemp.bottom = 255 + m_MouseRect.top - m_bY1 + 2;if (rectTemp.PtInRect(point) / 判断用户是不是想拖动点1m_iIsDraging = 1; / 设置拖动状态1,拖动点1:SetCursor(:LoadCursor(NULL, IDC_SIZEALL); / 更改光标 elserectTemp.left = m_MouseRect.left + m_bX2 - 2; / 计算点2临近区域rectTemp.right = m_MouseRect.left + m_bX2 + 2;rectTemp.top = 255 + m_MouseRect.top - m_bY2 - 2;rectTemp.bottom = 255 + m_MouseRect.top - m_bY2 + 2;if (rectTemp.PtInRect(point) / 判断用户是不是想拖动点2m_iIsDraging = 2; / 设置拖动状态为2,拖动点2:SetCursor(:LoadCursor(NULL, IDC_SIZEALL); / 更改光标 void CDlgGrayStretch:OnMouseMove(UINT nFlags, CPoint point) /鼠标移动函数 if(m_MouseRect.PtInRect(point) / 判断当前光标是否在绘制区域 if (m_iIsDraging != 0) / 判断是否正在拖动if (m_iIsDraging = 1) / 判断正在拖动点1还是点2if (point.x - m_MouseRect.left m_bX2) / 判断是否下限上限m_bX1 = (BYTE) (point.x - m_MouseRect.left); / 更改下限 elsem_bX1 = m_bX2 - 1; / 下限拖过上限,设置为上限-1point.x = m_MouseRect.left + m_bX2 - 1;/ 重设鼠标位置 m_bY1 = (BYTE) (255 + m_MouseRect.top - point.y); / 更改Y坐标 else / 正在拖动点2 与拖动点1类似 /更改光标 else / 计算点1临近区域、计算点2临近区域 BOOL WINAPI GrayStretch(LPSTR lpDIBBits, LONG lWidth, LONG lHeight, BYTE bX1, BYTE bY1, BYTE bX2, BYTE bY2) /库函数 初始化/ 计算灰度映射表(分段处理)for (i = 0; i 0) / 保证第一点X坐标bX1是否大于0(防止分母为0)bMapi = (BYTE) bY1 * i / bX1; / 线性变换 for (; i = bX2; i+) if (bX2 != bX1) / 判断第二点X坐标不等于第一点X坐标bX1是否等于bX2(防止分母为0) bMapi = bY1 + (BYTE) (bY2 - bY1) * (i - bX1) / (bX2 - bX1); / 线性变换 else/若两点X坐标相等则 bMapi = bY1; / 直接赋值为bY1 for (; i 256; i+) if (bX2 != 255) / 判断bX2是否等于255(防止分母为0) bMapi = bY2 + (BYTE) (255 - bY2) * (i - bX2) / (255 - bX2); / 线性变换 else bMapi = 255; / 直接赋值为255 *lpSrc = bMap*lpSrc; / 计算新的灰度值 void CJUXINGView:OnGrayStretch() /View类调用库函数 初始化、调用拉伸对话框 / 调用GrayStretch()函数进行灰度拉伸GrayStretch(lpDIBBits, :DIBWidth(lpDIB), :DIBHeight(lpDIB), bX1, bY1, bX2, bY2); 二) 空域滤波增强1、中值滤波说明:中值滤波一般采用一个含有奇数个点的滑动窗口,将窗口中各点灰度值的中值来替代指定点(中心点)的灰度值。编程时首先要建立一个可以人机交互的对话框,从中可以选择不同的中值滤波方式。其次要建立一个中值滤波函数库,最后在View类中初始化后直接调用该函数库中的滤波函数。BOOL WINAPI MedianFilter(LPSTR lpDIBBits, LONG lWidth, LONG lHeight, int iFilterH, int iFilterW, int iFilterMX, int iFilterMY) /库函数 初始化memcpy(lpNewDIBBits, lpDIBBits, lLineBytes * lHeight); / 初始化图像为原始图像hArray = LocalAlloc(LHND, iFilterH * iFilterW);/ 暂时分配内存,以保存滤波器数组for(i = iFilterMY; i lHeight - iFilterH + iFilterMY + 1; i+)/ 开始中值滤波for(j = iFilterMX; j lWidth - iFilterW + iFilterMX + 1; j+)lpDst = (unsigned char*)lpNewDIBBits + lLineBytes * (lHeight - 1 - i) + j;for (k = 0; k iFilterH; k+)/ 读取滤波器数组for (l = 0; l iFilterW; l+) lpSrc = (unsigned char*)lpDIBBits + lLineBytes * (lHeight - 1 - i + iFilterMY - k) + j - iFilterMX + l;aValuek * iFilterW + l = *lpSrc; / 保存象素值 * lpDst = GetMedianNum(aValue, iFilterH * iFilterW); / 获取中值 memcpy(lpDIBBits, lpNewDIBBits, lLineBytes * lHeight);/ 复制变换后的图像 void CJUXINGView:OnMFiler() /View类调用库函数 showall=15;/ 中值滤波 创建对话框、初始化 if (:MedianFilter(lpDIBBits, :DIBWidth(lpDIB), :DIBHeight(lpDIB), iFilterH, iFilterW, iFilterMX, iFilterMY) /调用库函数int i,j;for(i=0;i256;i+) /将滤波后的图像存入yuanshi0ijfor(j=0;jSetPixel (j+265,cyDIB-i, RGB(yuanshi0ij,yuanshi0ij,yuanshi0ij); 2、梯度锐化说明:与中值滤波相同,梯度锐化也需要建立一个对话框,然后编制库函数供View类调用,最后在View类的OnDraw()函数中显示。BOOL WINAPI GradSharp(LPSTR lpDIBBits, LONG lWidth, LONG lHeight, BYTE bThre) 一系列初始化for(i = 0; i lHeight; i+)/ 每行for(j = 0; j lWidth; j+)/ 每列lpSrc = (unsigned char*)lpDIBBits + lLineBytes * (lHeight - 1 - i) + j;lpSrc1 = (unsigned char*)lpDIBBits + lLineBytes * (lHeight - 2 - i) + j;lpSrc2 = (unsigned char*)lpDIBBits + lLineBytes * (lHeight - 1 - i) + j + 1;bTemp = abs(*lpSrc)-(*lpSrc1) + abs(*lpSrc)-(*lpSrc2);if (bTemp = bThre) / 判断是否大于阈值,对于小于情况,灰度值不变。 *lpSrc = bTemp; / 直接赋值为bTemp else *lpSrc = 255; / 直接赋值为255 void CJUXINGView:OnGradsharp() /View类调用库函数 创建对话框、一系列初始化/ 梯度锐化showall=15;/ 调用GradSharp()函数进行梯度板锐化if (:GradSharp(lpDIBBits, :DIBWidth(lpDIB), :DIBHeight(lpDIB), bThre) int i,j;for(i=0;i256;i+) for(j=0;j256;j+) yuanshi0ij=*(lpDIBBits+); 3、频域滤波说明:将图像进行傅立叶变换后,在频域内对图像进行处理也可以达到增强图像的效果。一幅图像中低频部分对应着图像中相对变化比较缓慢的部位,而高频部分则对应图像中变化比较剧烈部分如:边缘处和噪声处。因此对图像进行相应的低通、带通、高通处理可以获得比较理想的增强图像。编程时首先建立一个对话框,通过该对话框,用户可以任意输入各种滤波范围,之后在傅立叶反变换的库函数内对频域内的信息进行相应的滤波处理,最后在View类中调用该库函数,同时在OnDraw()函数中显示。BOOL WINAPI IFourier(LPSTR lpDIBBits, LONG lWidth, LONG lHeight
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年一级建造师《市政公用工程》考试真题及答案解析
- 2026年佳木斯市审计系统事业单位人员招聘考试备考试题及答案详解
- 2026年果洛市建设系统事业单位人员招聘考试备考试题及答案详解
- 2026年抚顺市税务系统事业单位人员招聘考试备考试题及答案详解
- 2026年喀什市财政系统事业单位人员招聘考试备考试题及答案详解
- 2026年海北市畜牧系统事业单位人员招聘考试备考试题及答案详解
- 2026年海口市琼山区残疾儿童康复中心医护人员招聘笔试模拟试题及答案解析
- 2026年吉林省白城市卫生健康系统人员招聘笔试参考题库及答案解析
- 2026年黄冈市医疗系统事业编乡村医生人员招聘考试备考试题及答案详解
- 2026年江西省建设医院医护人员招聘笔试模拟试题及答案解析
- 鸡鸭冻品专业知识培训课件
- 出货检验流程标准作业指导书
- 2025年中医全科医生转岗培训考试综合能力测试题及答案
- 医学课题申报书技术指标
- 交通安全协管员考试题库及答案解析
- 地铁区间高架桥施工安全风险评估及改进方案
- 2024煤矿地质工作细则
- 苏州文华东方酒店公区概念设计方案文本
- 2025年安徽中烟工业公司岗位招聘考试笔试试卷(附答案)
- 2025中小学教师考试《教育综合知识》试题及答案
- 暖通可行性研究报告
评论
0/150
提交评论