初学图像处理时老师布置的第一个任务,用了很多内置的函数,并不是很难实现。


说一下大概的步骤:
1.因为要处理的图像是jpg格式的,不是二维的形式存储的,所以先把RGB三个色域分离开。

%首先分离三个颜色
R = img(:,:,1);
G = img(:,:,2);
B = img(:,:,3);

2.分别计算各色域的梯度。
这里注意一下,计算时用uint8会溢出,所以这里我们用一下强制转换(仅仅是计算需要,不能用im2double转换)

%用算子求出三个颜色的梯度值
Rx = imfilter(double(R),fspecial(way));
Ry = imfilter(double(R),fspecial(way)');
Gx = imfilter(double(G),fspecial(way));
Gy = imfilter(double(G),fspecial(way)');
Bx = imfilter(double(B),fspecial(way));
By = imfilter(double(B),fspecial(way)');

3.最后复合一下得到结果:

edge(:,:,1) = uint8(sqrt(Rx.^2+Ry.^2));
edge(:,:,2) = uint8(sqrt(Gx.^2+Gy.^2));
edge(:,:,3) = uint8(sqrt(Bx.^2+By.^2));
figure('NumberTitle','off','Name','获取边缘');
imshow(edge,[]);%最后取负片,得到PS中的边缘效果
figure('NumberTitle','off','Name','PS边缘');
imshow(imcomplement(edge),[]);
title([way,'算子']);

执行命令运行一下:

>> im = imread('qie.jpg');
>> getEdge(im);

展示一下结果(效果还是相当不错的):



代码如下:
getEdge.m(程序的主代码)

%使用prewitt算子进行边缘检测
%传入的参数为(jpg图片)
%
%From:Yinggang Wang
%Create Date:2018.3.27
%Update:2018.3.30function [] = getEdge(img)way = 'prewitt';
%首先分离三个颜色
R = img(:,:,1);
G = img(:,:,2);
B = img(:,:,3);%用算子求出三个颜色的梯度值
Rx = imfilter(double(R),fspecial(way));
Ry = imfilter(double(R),fspecial(way)');
Gx = imfilter(double(G),fspecial(way));
Gy = imfilter(double(G),fspecial(way)');
Bx = imfilter(double(B),fspecial(way));
By = imfilter(double(B),fspecial(way)');%输出调试内容(封装进函数,不需要注释掉即可)
showPic(Rx,Ry,'红图');
showPic(Gx,Gy,'绿图');
showPic(Bx,By,'蓝图');%复合
figure('NumberTitle','off','Name','原图');
imshow(img,[]);edge(:,:,1) = uint8(sqrt(Rx.^2+Ry.^2));
edge(:,:,2) = uint8(sqrt(Gx.^2+Gy.^2));
edge(:,:,3) = uint8(sqrt(Bx.^2+By.^2));
figure('NumberTitle','off','Name','获取边缘');
imshow(edge,[]);%最后取负片,得到PS中的边缘效果
figure('NumberTitle','off','Name','PS边缘');
imshow(imcomplement(edge),[]);
title([way,'算子']);

showPic.m(用于调试不同色域的处理效果)

%展示某个图像用某种滤波器滤波后的x,y,以及两个方向上复合后的图function [] = showPic(x,y,name)
figure('NumberTitle','off','Name',name);
subplot(1,3,1);
imshow(x,[]);
title('x');subplot(1,3,2);
imshow(y,[]);
title('y');subplot(1,3,3);
imshow(sqrt(x.^2+y.^2),[]);
title('取模');

实现PS中的边缘检测功能(MatLab版)相关推荐

  1. 分析PS中的3D功能

    首先我们要点击进去PS当中,进去PS以后它是这个样子的, 如图: 这就是点击进去PS的样子,里面我用红笔标记的数字1是PS的工具,红笔标记数字2的地方是PS的菜单栏,红笔标记数字3的地方是整个PS的基 ...

  2. matlab中elevation函数功能,Matlab的Demcmap的Python等价物(elevation+/appropriate colormap)...

    不幸的是,matplotlib没有提供Matlab的demcmap的功能. 实际上,python basemap包中可能有一些内置特性,我不知道这些特性.在 所以,坚持matplotlib板上的选项, ...

  3. 怎样在PS中使用渐变功能对图片调色?原来还有这样的调色模式!

    我们可能见过很多好看简便颜色的图片,那么这些渐变的图片是怎么制作出来的呢?之前小编也是感到很好奇,经过多次的学习与尝试,了解了使用渐变映射功能.有兴趣的小伙伴可以跟着小编学习一下的啊! **准备材料: ...

  4. matlab中clear的功能,matlab中clc,close,close all,clear,clear all作用区别

    学习链接 clc:清除命令窗口的内容,对工作环境中的全部变量无任何影响 close:关闭当前的Figure窗口 close all:关闭所有的Figure窗口 clear:清除工作空间的所有变量 cl ...

  5. 关于网页中的万年历(功能超强版)

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <HEAD ...

  6. 【有利可图网】PS教程:用PS中的3D功能合成一幅比较有视觉冲击创意海报!

    效果图: 操作步骤: 新建画布1080*1700,拖入图像素材 2.为了在之后操作中画面比例不失衡,素材质量更高一些,将背景复制一层至左下方,添加图层蒙版,使用画笔工具进行擦除修复,使画面融合,选中两 ...

  7. matlab中高斯核公式,Matlab版LibSVM定义线性核和高斯核的使用方法

    (1)如何采用线性核? matlab> % Linear Kernel matlab> model_linear = svmtrain(train_label, train_data, ' ...

  8. canny检测matlab,Canny边缘检测(Matlab版)

    Canny(坎尼)边缘检测算法作为数字图像处理接触到的第一个效果较好的边缘检测算法,原理并不复杂.现有很多教程已经对其进行解释,在此不再赘述. Canny边缘检测的主要过程为 图像平滑去噪 图像梯度( ...

  9. matlab数学建模可应用到第几章,《MATLAB在数学建模中的应用(第2版)》

    <MATLAB在数学建模中的应用(第2版)> 卓金武 (编者)) 基本信息 •出版社: 北京航空航天大学出版社; 第2版 (2014年9月1日) •丛书名: MATLAB开发实例系列图书 ...

最新文章

  1. 横向瀑布流android,RecyclerView实现瀑布流布局
  2. 给文本框添加模糊搜索功能(“我记录”MVC框架下实现)
  3. Unix Shell 数学计算命令
  4. linux6.5下配置nfs,CentOS 6.5 NFS配置详细教程
  5. JavaScript部分问题
  6. mysql报错Attempted to open a previously opened tablespace的解决办法
  7. B树的原理以及C++实现(附源码和文档)
  8. 【原创】PDA 实现DataGrid可编辑
  9. 雷林鹏分享:Ruby 发送邮件 - SMATP
  10. MOOC 浙江大学C语言翁恺(第一、二章 满分答案)
  11. windows10程序员计算机,Win10计算器程序员模式如何移位?
  12. 华为云、百度、斗鱼的技术专家聚到一起在探讨什么?
  13. 查询失败,后台服务器运行错误,添加网络打印机错误?怎么处理?Windows 无法连接到打印机。 服务器打印后台处理程序服务没有运行。...
  14. 【教程】利用github学生认证免费使用CLion一年
  15. 我的小画板(Appinventor练习)
  16. 本地安装并创建MySQL数据库
  17. 【失败日记】手机内网穿透
  18. 大数据Impala系列之初识Impala
  19. 语义分割系列14-DMNet(pytorch)实现
  20. 强大的图文长微博工具 支持图文混排 支持美工字体

热门文章

  1. 毕业生报到系统服务器繁忙,报到证一定要去报到吗?不报到有哪些严重后果?...
  2. 思政课资料(思修+毛概+近代史+马原)
  3. 企业如何借助码匠,实现员工核酸提醒?
  4. 华为OD机试真题 C++ 实现【任务调度】【2022.11 Q4 新题】
  5. java猜数游戏图形界面_猜数游戏java实现代码
  6. librosa库安装
  7. 玩转BUI系列一--脚本动画控制交互篇:bui.animate
  8. 【独角兽通往巨头之路】如何看待目前国内AI公司的估值?
  9. 按照班级,统计班级的总人数,男生人数和女生人数分别是多少
  10. Mathematica-2:求解方程