能否编写一个用matlab实现的基于Roberts算子的图像边缘检测程序?

如题所述

clear; fid=fopen('d:\image\Lena.img','r'); %打开无格式文件 data1=(fread(fid,[256,256],'uint8'))'; subplot(2,3,1),imagesc(data1); colormap(gray); title('LENA','Color','r'); subplot(2,3,2); data2=uint8(data1); R=edge(data2,'Roberts'); imagesc(R); title('Roberts检测算子'); subplot(2,3,3); data2=uint8(data1); Q=edge(data2,'Prewitt'); imagesc(Q); title('Prewitt检测算子'); subplot(2,3,4); data2=uint8(data1); S=edge(data2,'Sobel'); imagesc(S); title('Sobel检测算子'); subplot(2,3,5); data2=uint8(data1); T=edge(data2,'Log'); imagesc(T); title('Log检测算子'); Matlab中运行过的 正确的!追问

运行之后说有错误,错误使用fread,文件标识符无效

温馨提示:内容为网友见解,仅供参考
第1个回答  2019-04-22
I=imread('ai.png'); %读取图像
I1=im2double(I); %将彩图序列变成双精度
I2=rgb2gray(I1); %将彩色图变成灰色图
[thr, sorh, keepapp]=ddencmp('den','wv',I2);
I3=wdencmp('gbl',I2,'sym4',2,thr,sorh,keepapp); %小波除噪
I4=medfilt2(I3,[9 9]); %中值滤波
I5=imresize(I4,0.2,'bicubic'); %图像大小
BW1=edge(I5,'sobel'); %sobel图像边缘提取
BW2=edge(I5,'roberts'); %roberts图像边缘提取
BW3=edge(I5,'prewitt'); %prewitt图像边缘提取
figure;
subplot(1,3,1);
imshow(BW1);
title('Sobel算子');
subplot(1,3,2);
imshow(BW2);
title('Roberts算子');
subplot(1,3,3);
imshow(BW3);
title('Prewitt算子');
亲测可行

...Roberts算子、Prewitt算子对图像进行边缘检测的程序,在matlab环境...
I5=imresize(I4,0.2,'bicubic'); %图像大小 BW1=edge(I5,'sobel'); %sobel图像边缘提取 BW2=edge(I5,'roberts'); %roberts图像边缘提取 BW3=edge(I5,'prewitt'); %prewitt图像边缘提取 BW4=edge(I5,'log'); %log图像边缘提取 BW5=edge(I5,'canny'); %canny图像边缘提取 h=fspecial(...

【图像处理】图像的边缘检测(Matlab代码实现)
例如,早期的梯度算子方法,如Sobel算子、Robert算子、Laplacian算子,以及工业界常用的Canny算子。此外,还有基于人工设计特征的方法,如统计边缘、概率边界(Pb)、PMI(pointwise mutual information),以及结构化边缘检测算法,如SE(structured forests edge detection)算法等。尽管传统边缘检测方法在提取边缘...

Matlab边缘检测问题
用mesh语句似乎可以,具体也不了解你的情况,感觉怪怪的,发一段我以前些的程序,用罗伯特算子写的,把算子一改就是sobel了。两种边缘检测近似算法奉上:clc close all clear all 生成高斯平滑滤波模板 hg=zeros(3,3); %设定高斯平滑滤波模板的大小为3*3 delta=0.5;for x=1:1:3 for y=1:...

Matlab关于图像边缘提取,用Sobel算子、Roberts算子、Prewitt算子,加QQ详...
Roberts算子是一种最简单的算子,是一种利用局部差分算子寻找边缘的算子,他采用对角线方向相邻两象素之差近似梯度幅值检测边缘。检测垂直边缘的效果好于斜向边缘,定位精度高,对噪声敏感,无法抑制噪声的影响。4.2.2 算法流程 Roberts算子在2×2领域上计算对角导数 (4-1)成为Roberts交叉算子。在实际应...

跪求基于matlab对sem图像进行边缘检测,各个算子程序怎么写?
im=imread('h1.jpg');I=rgb2gray(im);bw1=edge(I,'sobel');bw2=edge(I,'roberts');bw3=edge(I,'canny');bw4=edge(I,'prewitt');figure(2),subplot(2,2,1);imshow(bw4);title('prewitt算子效果图');subplot(2,2,2);imshow(bw1);title('sobel算子效果图');subplot(2,2,3);...

MATLAB梯度和拉普拉斯算子在图像边缘检测中的应用
Roberts边缘检测器使用邻域模板将一阶导数近似为相邻像素之间的差,但功能有限。Laplace边缘检测器通过二维函数的拉普拉斯来寻找边缘。LoG边缘检测器结合高斯平滑和Laplace锐化,效果更平滑,更适合有噪声的图像。Canny边缘检测器包含高斯平滑、梯度计算、非极大值抑制和阈值处理,能提供高定位精度和低误判率的边缘...

如何用MATLAB实现基于对数图像处理的边缘检测?恳请高人指点!在此谢过...
Matlab提供edge函数以实现检测边缘的功能,其算子有:微分算子法(Roberts和Sobe1)、拉普拉斯高斯算子法、Canny法 比如canny方法是 result = edge(x,'canny', nCanny_thre);参考资料:http:\/\/www.cs.ubc.ca\/~woodham\/cpsc505\/examples\/edge-code.html ...

matlab canny算子边缘检测函数代码
一、没有噪声时的检测结果 1 原始图像 2 Sobel算子边缘检测 3 Prewitt算子边缘检测 4 Roberts算子边缘检测 5 Laplace算子边缘检测 6 Canny算子边缘检测 二、加入高斯噪声(μ=0,σ^2=0.01)检测结果 1 原始图像 2 Sobel算子边缘检测 3 Prewitt算子边缘检测 4 Roberts算子边缘检测 5 Laplace算子边缘...

matlab二值图像截取
常用的检测算子有微分算子、拉普拉斯高斯算子和canny算子。 在Matlab图像处理工具箱中,提供了edge函数利用以上算子来检测灰度图像的边缘。 2.1微分算子法 经典的边缘提取方法是考察图像的每个像素的某个邻域内灰度的变化,利用边缘邻近一阶或二阶方向导数变化规律,用简单的方法检测边缘,称为微分算子法。 导数算子具有突出灰...

【程序】基于matlab使用边缘检测和形态学检测细胞
步骤一:图像导入 从前列腺癌细胞图像中提取目标,该图像含有两个细胞,但只有一个完整显示,目标是分离完整细胞。步骤二:边缘检测 利用edge函数和Sobel算子,通过对比度差异找到细胞边缘,设定阈值后生成二值掩膜,显示分割后的细胞。步骤三:形态学膨胀 使用strel函数创建线性结构元素,通过imdilate函数对二...

相似回答