freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于自適應(yīng)閾值的視網(wǎng)膜圖像分割及其程序設(shè)計畢業(yè)設(shè)計論文(編輯修改稿)

2024-10-03 17:24 本頁面
 

【文章內(nèi)容簡介】 + 為開發(fā)平 臺,以 CxImage 圖像處理庫為開發(fā)工具,設(shè)計并實現(xiàn)了相關(guān)算法。上述核心算法的描述和代碼如下: 固定閾值 本算法先選固定閾值為全局像素值的平均值,即先對全局像素值求和為 Tp,并記錄像素個數(shù) C,然后再求得全局像素均值 cTpAp? 為固定閾值,最后遍歷整圖中的像素值與固定閾值進行比較并重新賦值進行顯示。 void CDemoDoc::OnCximage_YBBCT() { // 在這里開始添加自己的命令代碼 if (image==NULL) return。 /*如果沒有讀取到圖像,返回 */ long w, h, x, y。 /*w 為圖像的寬度, h 為圖像的高度, x 為像素的橫坐標(biāo), y為像素的縱坐標(biāo) */ int c=0。 double v=0。 w = imageGetWidth()。 /*讀取圖像的寬度 */ h = imageGetHeight()。 /*讀取圖像的高度 */ imageGrayScale()。 /*把圖像轉(zhuǎn)換為灰度圖 */ BYTE *thd_img。 /*建立圖像數(shù)據(jù)的 指針 */ thd_img = (BYTE *)malloc((w)*(h)*sizeof(BYTE))。 /*給圖像分配內(nèi)存 */ for (y = 0。 y h。 y++) /*對圖像的高度 h 開始遍歷 */ { 寧波工程學(xué)院本科畢業(yè)設(shè)計論文 11 for (x =0。 x w。 x++) /*對圖像的寬度 w 開始遍歷 */ { v+= imageGetPixelIndex(x,y)。 c++。 } } v/=c。 if(imageGetPixelIndex(x,y)=(BYTE)v) /*跟所求閾值進 行比較并賦值 */ thd_img[y*w+x]=255。 else thd_img[y*w+x]=0。 imageSetPixelIndex(x,y,(BYTE)thd_img[y*w+x])。 /*對所得的像素點進行顯示 */ } } free(thd_img)。 /*釋放指針 */ } 自適應(yīng)閾值 本算法先對每個像素選取一個大小為 18*18 的鄰域,然后針對每一個鄰域求出它相應(yīng)的均值,即 118*18 1118*181 ??? ???iPiAt 為自適應(yīng)閾值,然后針 對該鄰域中的每個像素的值與該鄰域的閾值進行比較并重新賦值,依次遍歷整圖,最后對所得的像素點進行顯示。 void CDemoDoc::OnCximage_YBBAT() { //在這里開始添加自己的命令代碼 if (image==NULL) return。 /*如果沒有讀取到圖像,返回 */ long w, h, x, y。 /*w 為圖像的寬度, h 為圖像的高度, x 為像素的橫坐標(biāo), y寧波工程學(xué)院本科畢業(yè)設(shè)計論文 12 為像素的縱坐標(biāo) */ int k, l, c。 /*k 表示所取子領(lǐng)域的寬度, l 為所取子領(lǐng)域的高度, c 作為灰度值的和加總 */ double v。 /*v 為所求灰度的均值 */ w = imageGetWidth()。 /*讀取圖像的寬度 */ h = imageGetHeight()。 /*讀取圖像的高度 */ imageGrayScale()。 /*把圖像轉(zhuǎn)換為灰度圖 */ BYTE *thd_img。 /*建立圖像數(shù)據(jù)的指針 */ thd_img = (BYTE *)malloc((w)*(h)*sizeof(BYTE))。 /*給圖像分配內(nèi)存 */ for (y = 0。 y h。 y++) /*對圖像的高度 h 開始遍歷 */ { for (x =0。 x w。 x++) /*對圖像的寬度 w 開始遍歷 */ { v =0。 /*對變量 v 賦初值 0*/ c =0。 /*對變量 c 賦初值 0*/ for (l=9。l10。l++) /*對鄰域的高度 l 開始遍歷 */ { for(k=9。k10。k++) /*對鄰域的寬度 k 開始遍歷 */ { if((y+l)=0amp。amp。(y+l)hamp。amp。(x+k)=0amp。amp。(x+k)w) /*像素點的坐標(biāo)要滿足在圖像內(nèi) */ { v+= imageGetPixelIndex(x+k,y+l)。 c++。 } } } v/=c。 if(imageGetPixelIndex(x,y)=(BYTE)v) /*跟所求閾值進行比較并賦值 */ thd_img[y*w+x]=255。 寧波工程學(xué)院本科畢業(yè)設(shè)計論文 13 else thd_img[y*w+x]=0。 } } for (y = 0。 y h。 y++) { for (x =0。 x w。 x++) { imageSetPixelIndex(x,y,(BYTE)thd_img[y*w+x])。 /*對所得的像素點進行顯示 */ } } free(thd_img)。 /*釋放指針 */ } Canny 算子 本算法先是利用高斯函數(shù)對圖像進行平滑,去除圖像中的噪聲,并產(chǎn)生一個一維高斯分布函數(shù),在高斯平滑函數(shù)中生成高斯濾波函系數(shù) [7],然后采用二階范數(shù)計算梯度,抑制局部像素非最大梯度點,根據(jù)梯度計算及經(jīng)過非最大值抑制后的結(jié)果設(shè)定閾值,再利用函數(shù)尋找邊界的起點,最后用 Hysteresis[2]執(zhí)行的結(jié)果,從一個像素點開始進行搜索,搜索以該像素為邊界起點的一條邊界所有的邊界點。 void Canny(unsigned char *pUnchImage, int nWidth, int nHeight, double sigma, double dRatioLow, double dRatioHigh, unsigned char *pUnchEdge) { unsigned char * pUnchSmooth 。 /*經(jīng)過高斯濾波后的圖像數(shù)據(jù) */ int * pnGradX 。 /*指向 x 方向?qū)?shù)的指針 */ int * pnGradY 。 /*指向 y 方向?qū)?shù)的指針 */ int * pnGradMag 。 /*梯度的幅度 */ pUnchSmooth = new unsigned char[nWidth*nHeight] 。 pnGradX = new int [nWidth*nHeight] 。 寧波工程學(xué)院本科畢業(yè)設(shè)計論文 14 pnGradY = new int [nWidth*nHeight] 。 pnGradMag = new int [nWidth*nHeight] 。 GaussianSmooth(pUnchImage, nWidth, nHeight, sigma, pUnchSmooth) 。 /*對原圖像進行濾波 */ DirGrad(pUnchSmooth, nWidth, nHeight, pnGradX, pnGradY) 。 /*計算方向?qū)?shù) */ GradMagnitude(pnGradX, pnGradY, nWidth, nHeight, pnGradMag) 。 /*計算梯度的幅度 */ NonmaxSuppress(pnGradMag, pnGradX, pnGradY, nWidth, nHeight, pUnchEdge) 。 /*應(yīng)用 nonmaximum 抑制 */ Hysteresis(pnGradMag, nWidth, nHeight, dRatioLow, dRatioHigh, pUnchEdge)。 /*應(yīng)用 Hysteresis,找到所有的邊界 */ delete pnGradX 。 pnGradX = NULL 。 delete pnGradY 。 pnGradY = NULL 。 delete pnGradMag 。 pnGradMag = NULL 。 delete pUnchSmooth 。 pUnchSmooth = NULL 。 } void CImageProcessingView::OnEdgeCanny() { CImageProcessingDoc*pDoc=(CImageProcessingDoc*)thisGetDocument()。 CDib * pDib = pDocm_pDibInit。 LPBITMAPINFOHEADER lpBMIH=pDibm_lpBMIH。 if (lpBMIHbiBitCount != 8) /*判斷是否是 8bpp 位圖 */ { MessageBox(目前只支持 256 色位圖的圖像分割! , 系統(tǒng)提示 , MB_ICONINFORMATION | MB_OK)。 /*提示用戶 */ 寧波工程學(xué)院本科畢業(yè)設(shè)計論文 15 return。 } int y。 int x。 CSize sizeImage = pDibGetDimensions()。/*獲得圖像的大小 */ int nWidth = 。 int nHeight= 。 int nSaveWidth = pDibGetDibSaveDim().cx。 unsigned char * pUnchImage = new unsigned char[nWidth*nHeight]。 /*開辟內(nèi)存,存儲圖像數(shù)據(jù) */ for(y=0。 ynHeight。 y++) { for(x=0。 xnWidth。 x++) { pUnchImage[y*nWidth+x] = pDibm_lpImage[y*nSaveWidth+x]。 } } unsigned char * pUnchEdge = new unsigned char[nWidth*nHeight]。 /* canny 算子計算后的結(jié)果 */ Canny(pUnchImage, nWidth, nHeight, , , , pUnchEdge) 。 /*調(diào)用 canny 函數(shù)進行邊界提取 */ for(y=0。 ynHeight。 y++) { for(x=0。 xnWidth。 x++) { pDibm_lpImage[y*nWidth+x]=(unsigned char)(255pUnchEdge[y*nWidth+x])。 } } delete []pUnchImage。 寧波工程學(xué)院本科畢業(yè)設(shè)計論文 16 pUnchImage = NULL 。 delete []pUnchEdge 。 pUnchEdge = NULL 。 EndWaitCursor()。 Invalidate()。 } 實驗結(jié)果 本節(jié)給出了幾幅主要的視網(wǎng)膜圖像分割的測試結(jié)果:圖 4 為原始圖,圖 5 為所轉(zhuǎn)換成的 256 級灰度圖,圖 6 為用固定閾 值進行的視網(wǎng)膜圖像分割,圖 7 至圖11 為選取了各種大小的子鄰域?qū)σ暰W(wǎng)膜圖像分別進行的分割測試。圖 12 為用canny 算子所進行的邊緣檢測分割,用此與自適應(yīng)閾值分割來進行對比。 圖 4 所要測試的原圖 寧波工程學(xué)院本科畢業(yè)設(shè)計論文 17 圖 5 轉(zhuǎn)換成的 256級灰度圖 圖 6 固定閾值分割 圖 7 鄰域為 3x3的自適應(yīng)閾值分割 圖 8 鄰域為 5x5的自適應(yīng)閾值分割 寧波工程學(xué)院本科畢業(yè)設(shè)計論文 18 圖 9 鄰域為 9x9的自適應(yīng)閾值分割 圖 10鄰域為 15x15的自適應(yīng)閾值分割 圖 11鄰域為 23x23的自適應(yīng)閾值分割 寧波工程學(xué)院本科畢業(yè)設(shè)計論文 19 圖 12 canny 算子所進行的邊緣檢測分割 性能 分析 通過 節(jié)的圖 4 至圖 12 可以驗證本課題的可行性。 ? 圖 6 的固定閾值分割結(jié)果只顯示了一個眼球的整體輪廓,由此可見這種固定閾值的分割法顯然無法從事繁瑣的視網(wǎng)膜圖像分割,用于精確的血管分割便
點擊復(fù)制文檔內(nèi)容
法律信息相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1