边缘检测Roberts算子

        if(biBitCount==8){//灰度图像
            for(i=0;i<height;i++){
                for(j=0;j<width;j++){
                    // *(pImgData+i*lineByte+j)=0;
                    double dx=*(pImgData+i*lineByte+j)-*(pImgData+(i+1)*lineByte+(j+1));//计算dx
                    double dy=*(pImgData+i*lineByte+(j+1))-*(pImgData+(i+1)*lineByte+j);//计算dy
                    gradnt=sqrt(pow(dx,2)+pow(dy,2));//计算梯度
                    if(gradnt>max)max=gradnt;//记录梯度的最大值
                    if(gradnt<min)min=gradnt;//记录梯度的最小值
                }
            }

            for(i=0;i<height;i++){
                for(j=0;j<width;j++){

                    double dx=*(pImgData+i*lineByte+j)-*(pImgData+(i+1)*lineByte+(j+1));//计算dx
                    double dy=*(pImgData+i*lineByte+(j+1))-*(pImgData+(i+1)*lineByte+j);//计算dy
                    gradnt=sqrt(pow(dx,2)+pow(dy,2));//计算梯度
                    yy=255/(max-min);//将梯度范围影射到0-255
                    *(pImgData+i*lineByte+j)=yy*gradnt;//设置灰度值为梯度值
                }
            }
            Invalidate();//刷新显示
        }

你可能感兴趣的:(边缘检测,Roberts算子,数字图像)