彩色图像的边缘检测

  • 虫虫123456
    了解作者
  • matlab
    开发工具
  • 1.3KB
    文件大小
  • rar
    文件格式
  • 0
    收藏次数
  • 5 积分
    下载积分
  • 0
    下载次数
  • 2022-07-04 22:18
    上传日期
彩色图像的边缘检测。。彩色图像的边缘检测
IeUPhofmFcdfu5 (1).rar
  • 彩色图像的边缘检测
  • Color_edge.m
    2.5KB
  • www.pudn.com.txt
    218B
内容介绍
RGB=imread('LRY.bmp'); figure;imshow(RGB);title('RGB彩色空间原图像'); grayRGB=rgb2gray(RGB); figure;imshow(grayRGB);title('黑白原图像'); BW=edge(grayRGB,'sobel'); figure;imshow(BW);title('对黑白原图像sobel算子边缘检测'); RGB=double(RGB); SIZE=size(RGB); for i=2:SIZE(1)-1 for j=2:SIZE(2)-1 G_rx(i,j)=abs(RGB(i-1,j+1,1)+2*RGB(i,j+1,1)+RGB(i+1,j+1,1)-RGB(i-1,j-1,1)-2*RGB(i,j-1,1)-RGB(i+1,j-1,1))/255; if G_rx(i,j)>1 G_rx(i,j)=1; end; if G_rx(i,j)<0 G_rx(i,j)=0; end; G_gx(i,j)=abs(RGB(i-1,j+1,2)+2*RGB(i,j+1,2)+RGB(i+1,j+1,2)-RGB(i-1,j-1,2)-2*RGB(i,j-1,2)-RGB(i+1,j-1,2))/255; if G_gx(i,j)>1 G_gx(i,j)=1; end; if G_gx(i,j)<0 G_gx(i,j)=0; end; G_bx(i,j)=abs(RGB(i-1,j+1,3)+2*RGB(i,j+1,3)+RGB(i+1,j+1,3)-RGB(i-1,j-1,3)-2*RGB(i,j-1,3)-RGB(i+1,j-1,3))/255; if G_bx(i,j)>1 G_bx(i,j)=1; end; if G_rx(i,j)<0 G_bx(i,j)=0; end; G_ry(i,j)=abs(RGB(i+1,j-1,1)+2*RGB(i+1,j,1)+RGB(i+1,j+1,1)-RGB(i-1,j-1,1)-2*RGB(i-1,j,1)-RGB(i-1,j+1,1))/255; if G_ry(i,j)>1 G_ry(i,j)=1; end; if G_ry(i,j)<0 G_ry(i,j)=0; end; G_gy(i,j)=abs(RGB(i+1,j-1,2)+2*RGB(i+1,j,2)+RGB(i+1,j+1,2)-RGB(i-1,j-1,2)-2*RGB(i-1,j,2)-RGB(i-1,j+1,2))/255; if G_gy(i,j)>1 G_gy(i,j)=1; end; if G_gy(i,j)<0 G_gy(i,j)=0; end; G_by(i,j)=abs(RGB(i+1,j-1,3)+2*RGB(i+1,j,3)+RGB(i+1,j+1,3)-RGB(i-1,j-1,3)-2*RGB(i-1,j,3)-RGB(i-1,j+1,3))/255; if G_by(i,j)>1 G_by(i,j)=1; end; if G_by(i,j)<0 G_by(i,j)=0; end; if G_rx(i,j)+G_gx(i,j)+G_bx(i,j)>G_ry(i,j)+G_gy(i,j)+G_by(i,j) G_RGB(i,j,1)=G_rx(i,j); G_RGB(i,j,2)=G_gx(i,j); G_RGB(i,j,3)=G_bx(i,j); else G_RGB(i,j,1)=G_ry(i,j); G_RGB(i,j,2)=G_gy(i,j); G_RGB(i,j,3)=G_by(i,j); end; end; end; figure;imshow(G_RGB);title('RGB彩色空间边缘检测'); grayG_RGB=rgb2gray(G_RGB); figure;imshow(grayG_RGB);title('RGB彩色空间边缘检测黑白图像'); %以下再对RGB彩色空间边缘检测黑白图像进行阈值处理 C=255*grayG_RGB; %figure;imshow(C);title('原始灰度图像'); count=imhist(C); [r,t]=size(C); N=r*t; L=256; count=count/N; for i=2:L if count(i)~=0 st=i-1; break; end; end; for i=L:-1:1 if count(i)~=0 nd=i-1; break; end; end; f=count(st+1:nd+1); p=st;q=nd-st; u=0; for i=1:q u=u+f(i)*(p+i-1); ua(i)=u; end; for i=1:q w(i)=sum(f(1:i)); end; d=(u*w-ua).^2./(w.*(1-w)); [y,tp]=max(d); th=tp+p; if th<=160 th=tp+p; else th=160; end; Y1=zeros(r,t); for i=1:r for j=1:t X1(i,j)=double(C(i,j)); end; end; for i=1:r for j=1:t if(X1(i,j)>=th) Y1(i,j)=X1(i,j); else Y1(i,j)=0; end; end; end; figure;imshow(Y1);title('RGB空间边缘检测变黑白图像后进行灰度门限分割的图像');
评论
    相关推荐
    • ExImage彩色图像处理
      彩色图像处理、自适应中值滤波、图像增强、几何校正、图像配准、图像拼接、图像融合、图像压缩。
    • 彩色图像处理.rar
      基于彩色图像的一些图像处理方法 对于初学者帮助很大 可以下载看一看
    • 彩色图像处理之伪彩色图像处理.rar
      近几年来,随着多媒体技术和因特网的迅速发展和普及,数字图像处理技术受到了前所未有的广泛重视,出现了许多新的应用领域。...由于彩色图像提供了比灰度图像更为丰富的信息,因此彩色图像处理正受到人们越来越多的关注。
    • 彩色图像灰度化BlurDatasetImage数据库
      用于彩色图像灰度化的数据库BlurDatasetImage
    • 彩色图像分割
      很好用的图像分割算法,代码加上实例,可以帮助初学者很快的掌握图像分割的精髓,算法简单明了,路径无需设置,直接运行即可。
    • 彩色图像分解
      将一个彩色图像分解成蓝,绿,红。变成黑白颜色。使用Class imShow 显示图像 。 使用 import org.opencv.core.*; import org.opencv.imgcodecs.Imgcodecs; import org.opencv.imgproc.Imgproc;
    • 彩色图像处理
      代码可以实现对彩色图像的平滑处理、锐化处理、边缘检测、直方图均衡等操作。程序使用C#。
    • 彩色图像控件
      WPF控件的集合,这些控件允许更改图像的颜色(图像,按钮,切换按钮和下拉按钮)。
    • 彩色图像增强
      改代码用了一种很简单的算法,通过直方图均衡化来实现图像的增强,对于初学者来说非常的有帮组,代码已经运行通过
    • libiconv-1.1.tar.gz
      字符集转换程序