photoshop边缘检测如何使用

3300人阅读
转自:http://www.tangrui.net//implementation-of-edge-detection-using-csharp
&&&& 我本人对图像处理没什么兴趣,要不是这门课要交作业,我才懒得做这些东西。唉&&不过程序写了,自然会有一点想法,发到 Blog 上,以备后用吧。但是,即便是写了程序,也仍然不知道作边缘检测的原理何在,只是模糊的知道大概是对图像灰度求梯度,梯度大的就是边缘了。但毕竟图像是离散化的,可以使用另外的方法求梯度,而不用像高数中那样拼命地算偏导数了。有很多学者提出了很多种不同性能的模板,只要按照模板作简单的四则运算就行了,当然这也是能用程序实现的关键。由于作为教学课程,所有的内容都是以简单的灰度图像来说明举例的,当然边缘检测也不例外,留作业写程序也是一样,所以马上就遇到的一个问题是如何将彩色图像转为灰度图像。在课程中,都是简单的认为灰度图像只有一个亮度,这自然是没错的,但是放到计算机里,灰度也是一种颜色,是颜色就要使用色彩模式(最常用的自然是 RGB 了),那么这种灰度到底应该是怎样的颜色编码呢?索性取向 Photoshop ,看一看各种灰度色调,终于有所发祥。其实也可以这么想,全黑是 #000000 ,全白是 #FFFFFF ,那么是不是只要 RGB 值都相等,这个颜色就是灰度色呢?试了一下,果然如此。这样就好办了,至少第一步知道了转换的目标是什么了。但马上就又有了一个问题,彩色图片的颜色这么多,那么如何知道哪种彩色颜色对应哪种灰度颜色呢?这一点我从 .net Framework 中找到了答案。其实我从一开始就想在 .net Framework 中寻找有没有直接将 RGB 转成灰度或者是 HIS 模式(因为 HIS 模式中的 I 就使亮度,自然就容易转成灰度了)的,是不是太奢望了,所以我也没抱太大的希望,但是在这过程中却发现 Color 中有关一个实例方法 GetBrightness() ,就是用来获得颜色亮度的,真是踏破铁鞋无觅处,得来全不费功夫。该方法返回一个 0~1 之间的浮点数,那么如果 RGB 每个各占一个字节的话,那么刚好可以用这个值去乘以 255 ,然后拼成一个 RGB ,这个颜色就是原始色彩所对应的灰色。程序代码如下://定义两个颜色变量,oColor为原始色彩,gColor为对应的灰度色彩Color oColor,gC//原始色彩的亮度//灰度色彩用 RGB 来表示,由于 R=G=B 所以只用一个变量就可以了int gRGB;//遍历图像中的每个像素for (int i = 0; i & oBmp.W i ++) {&&& for (int j = 0; j & oBmp.H j ++) {&&&&&&& //得到像素的原始色彩&&&&&&& &&&&&&& oColor = oBmp.GetPixel(i,j);&&&&&&& //得到该色彩的亮度&&&&&&& brightness = oColor.GetBrightness();&&&&&&& //用该亮度计算灰度&&&&&&& gRGB = (int)(brightness * 255);&&&&&&& //组成灰度色彩&&&&&&& gColor = Color.FromArgb(gRGB,gRGB,gRGB);&&&&&&& //最后将该灰度色彩赋予该像素&&&&&&& gBmp.SetPixel(i,j,gColor); &&& }}
其实还是很简单的。这之后就可以按照书中所说的模板游历的方法来进行边缘检测了。程序如下:
//template为模板,nThreshold是一个阈值,//用来将模板游历的结果(也就是梯度)进行划分。//大于阈值的和小于阈值的分别赋予两种颜色,白或黑来标志边界和背景private void EdgeDectect(int[,] template,int nThreshold) {&&& //取出和模板等大的原图中的区域&&& int[,] gRGB = new int[3,3];&&& //模板值结果,梯度&&& int templateValue = 0;&&& //遍历灰度图中每个像素&&& for (int i = 1; i & gBmp.Width - 1; i ++) {&&&&&&& for (int j = 1; j & gBmp.Height - 1; j ++) {&&&&&&&&&&& //取得模板下区域的颜色,即灰度&&&&&&&&&&& gRGB[0,0] = gBmp.GetPixel(i-1,j-1).R;&&&&&&&&&&& gRGB[0,1] = gBmp.GetPixel(i-1,j).R;&&&&&&&&&&& gRGB[0,2] = gBmp.GetPixel(i-1,j+1).R;&&&&&&&&&&& gRGB[1,0] = gBmp.GetPixel(i,j-1).R;&&&&&&&&&&& gRGB[1,1] = gBmp.GetPixel(i,j).R;&&&&&&&&&&& gRGB[1,2] = gBmp.GetPixel(i,j+1).R;&&&&&&&&&&& gRGB[2,0] = gBmp.GetPixel(i+1,j-1).R;&&&&&&&&&&& gRGB[2,1] = gBmp.GetPixel(i+1,j).R;&&&&&&&&&&& gRGB[2,2] = gBmp.GetPixel(i+1,j+1).R;&&&&&&&&&&& //按模板计算&&&&&&&&&&& for (int m = 0; m & 3; m ++) {&&&&&&&&&&&&&&& for (int n = 0; n & 3; n ++) {&&&&&&&&&&&&&&&&&&& templateValue += template[m,n] * gRGB[m,n];&&&&&&&&&&&&&&& }&&&&&&&&&&& }&&&&&&&&&&& //将梯度之按阈值分类,并赋予不同的颜色&&&&&&&&&&& if (templateValue & nThreshold) {&&&&&&&&&&&&&&& eBmp.SetPixel(i,j,Color.FromArgb(255,255,255)); //白&&&&&&&&&&& } else {&&&&&&&&&&&&&&& eBmp.SetPixel(i,j,Color.FromArgb(0,0,0)); //黑&&&&&&&&&&& }&&&&&&&&&&& templateValue = 0;&&&&&&& }&&& }}
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:9473次
排名:千里之外
(1)(1)(1)(1)(2)(3)(1)(1)人人网 - 抱歉
哦,抱歉,好像看不到了
现在你可以:
看看其它好友写了什么
北京千橡网景科技发展有限公司:
文网文[号··京公网安备号·甲测资字
文化部监督电子邮箱:wlwh@··
文明办网文明上网举报电话: 举报邮箱:&&&&&&&&&&&&ImageProcess2 灰度图像边缘检测
1.编程实现以下六种 算子。
(1)Roberts Special Effects 图形 处理 238万源代码下载-
&文件名称: ImageProcess2
& & & & &&]
&&所属分类:
&&开发工具: Visual C++
&&文件大小: 4233 KB
&&上传时间:
&&下载次数: 24
&&提 供 者:
&详细说明:灰度图像边缘检测
1.编程实现以下六种图像边缘检测算子。
(1)Roberts边缘算子
(2)Sobel边缘算子
(3)Prewitt边缘算子
(4)拉普拉斯边缘算子
(5)Kirsch边缘算子
2.根据检测结果,分析与比较各种边缘检测算法的主要区别。
-Edge Detection 1. Programming to achieve the following six kinds of image edge detection operator. (1) Roberts edge operator (2) Sobel edge operator (3) Prewitt edge operator (4) Laplacian edge operator (5) Kirsch edge operator 2. According to test results, analysis and comparison of different edges The main difference detection algorithm.
文件列表(点击判断是否您需要的文件,如果是垃圾请在下面评价投诉):
&&ImageProcess2\ChildFrm.cpp&&.............\ChildFrm.h&&.............\ConvoluteDlg.cpp&&.............\ConvoluteDlg.h&&.............\CqOctree.cpp&&.............\Debug\BuildLog.htm&&.............\.....\ChildFrm.obj&&.............\.....\ChildFrm.sbr&&.............\.....\ConvoluteDlg.obj&&.............\.....\ConvoluteDlg.sbr&&.............\.....\CqOctree.obj&&.............\.....\CqOctree.sbr&&.............\.....\Dib.obj&&.............\.....\Dib.sbr&&.............\.....\dibapi.obj&&.............\.....\dibapi.sbr&&.............\.....\EmbossmentDlg.obj&&.............\.....\EmbossmentDlg.sbr&&.............\.....\ImageProcess.bsc&&.............\.....\ImageProcess.exe&&.............\.....\ImageProcess.exe.embed.manifest&&.............\.....\ImageProcess.ilk&&.............\.....\ImageProcess.obj&&.............\.....\ImageProcess.pch&&.............\.....\ImageProcess.pdb&&.............\.....\ImageProcess.res&&.............\.....\ImageProcess.sbr&&.............\.....\ImageProcessDoc.obj&&.............\.....\ImageProcessDoc.sbr&&.............\.....\ImageProcessView.obj&&.............\.....\ImageProcessView.sbr&&.............\.....\IP.obj&&.............\.....\IP.sbr&&.............\.....\MainFrm.obj&&.............\.....\MainFrm.sbr&&.............\.....\SpreadDlg.obj&&.............\.....\SpreadDlg.sbr&&.............\.....\StdAfx.obj&&.............\.....\StdAfx.sbr&&.............\.....\vc60.idb&&.............\.....\vc60.pdb&&.............\.....\vc90.idb&&.............\.....\vc90.pdb&&.............\Dib.cpp&&.............\Dib.h&&.............\dibapi.cpp&&.............\dibapi.h&&.............\EmbossmentDlg.cpp&&.............\EmbossmentDlg.h&&.............\ImageProcess.aps&&.............\ImageProcess.clw&&.............\ImageProcess.cpp&&.............\ImageProcess.dsp&&.............\ImageProcess.dsw&&.............\ImageProcess.h&&.............\ImageProcess.ncb&&.............\ImageProcess.opt&&.............\ImageProcess.plg&&.............\ImageProcess.rc&&.............\ImageProcess.sln&&.............\ImageProcess.suo&&.............\ImageProcess.vcproj&&.............\ImageProcess.vcproj.LiShen-PC.LiShen.user&&.............\ImageProcessDoc.cpp&&.............\ImageProcessDoc.h&&.............\ImageProcessView.cpp&&.............\ImageProcessView.h&&.............\IP.cpp&&.............\MainFrm.cpp&&.............\MainFrm.h&&.............\ReadMe.txt&&.............\res\ImageProcess.ico&&.............\...\ImageProcess.rc2&&.............\...\ImageProcessDoc.ico&&.............\...\Toolbar.bmp&&.............\resource.h&&.............\SpreadDlg.cpp&&.............\SpreadDlg.h&&.............\StdAfx.cpp&&.............\StdAfx.h&&.............\Debug&&.............\res&&ImageProcess2
&[]:纯粹是垃圾
&相关搜索:
&输入关键字,在本站238万海量源码库中尽情搜索:
&[] - 包括了几种最常见的滤波器的设计(高通低通都有),还有边缘检测,直方图均衡化,FFT变换等。
&[] - Z本程序利用BP神经网络对图像特征进行了,提取,并给出了响应的解释
&[] - 数字图像处理课程的大实验,实现图像的各种操作,包括滤波,锐化,Fourier变换等
&[] - 本文首先就传统的边缘检测算子(即一阶算子 Roberts 算子、Sobel 算子、Prewit
算子、二阶算子 Kirsch 算子、Robinson 算子和 LOG 算子)和新兴的边缘检测算子(即 Canny 算子和小波边缘检测方法)的思想和性质进行了理论和探讨,同时给
出了这些边缘检测算子的实
&[] - 几种图像边缘检测算子的比较分析.rarEdge detection operator of several comparative analysis
&[] - 图象边缘检测,包括传统经典算子:Sobel、Roberts、Prewitt、Laplacian及Canny算子
&[] - 用matlab或C编程实现Roberts算子和Sobel算子。选择一幅灰度图像,使用Roberts算子、Sobel算子计算梯度,给出斯锐化图象(注:不直接调用matlab的库函数)
4、分别采用灰度变换和直方图均衡化方法对下面的图像进行增强,改善图像效果
&[] - 主要分析几种应用于数字图像处理中的边缘检测算子,根据它们在实践中的应用结果进行研究,主要包括:
Robert 边缘算子、Prewitt 边缘算子、Sobel 边缘算子、Kirsch 边缘算子以及Laplacian 算子等,根据实验处理结果讨论了
几种检测方法的优劣.
&[] - 用VC++实现的各种经典边缘检测算法――roberts,sobel,prewitt,kirsch,高斯,LOG等。
&[] - 该gui函数基本上包括图像处理里面的最基本处理,相当于一个小型photoshop。比如读取文件,几何变换中的垂直镜像,平移,旋转,缩放;正交变换的DFT,FFT,DCT,DST,DHT,DWashT;灰度处理中的反色,直方图均衡,全局线性变换,分段线性变换,指数非线性变换,对数非线性变换;图像增强里PS实例教程:“调整边缘”干净抠图无白边_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
评价文档:
PS实例教程:“调整边缘”干净抠图无白边
上传于||暂无简介
大小:1.45MB
登录百度文库,专享文档复制特权,财富值每天免费拿!
你可能喜欢Photoshop CS6平面设计自学视频教程
推荐阅读:
请进入最下面签名处点击进入下载目录Photoshop CS6平面设计自学视频教程第1章
Photoshop快速入门1.1
进入Photoshop的世界1.1.1 体验全新的Photoshop CS61.1.2 Photoshop在平面设计中的应用1.2
安装与启动Photoshop1.2.1 安装Photoshop CS6的系统要求1.2.2 动手学安装Photoshop CS61.2.3 启动Photoshop CS6 1.2.4 卸载Photoshop CS6 1.3
使用Photoshop CS6前的准备1.3.1 认识Photoshop CS6的工作界面技术拓展状态栏菜单详解技术拓展展开与折叠面板1.3.2 动手学更改界面颜色方案1.3.3 动手学使用不同的工作区1.3.4 动手学自定义适合自己的工作区1.3.5 动手学使用不同的屏幕模式进行操作1.4
图像文件的基本操作1.4.1 动手学打开文件答疑解惑为什么在打开文件时不能找到需要的文件1.4.2 新建文件技术拓展“分辨率”的相关知识1.4.3 动手学存储文件答疑解惑“存储”与“存储为”有什么差别技术拓展熟悉常见的图像格式1.4.4 置入文件案例实战——使用“置入”命令快速打造艺术效果视频课堂——制作混合插画1.4.5 导入与导出1.4.6 动手学关闭文件1.4.7 动手学复制图像文件案例实战——制作简单的平面设计作品思维点拨色光三原色与印刷三原色1.5
修改文档画布尺寸1.6
图像文档的查看方式1.6.1 动手学使用缩放工具调整图像缩放级别技术拓展缩放工具参数详解1.6.2 动手学使用抓手工具平移画面1.6.3 使用旋转画布工具1.6.4 使用“导航器”画板查看画面1.6.5 调整多文档的排布方式课后练习——DIY电脑壁纸本章小结第2章
学习Photoshop的基本操作2.1
认识图层2.1.1 什么是图层2.1.2 认识“图层”面板技术拓展详解“图层”面板2.1.3 认识不同种类的图层2.2
图层的基本操作2.2.1 动手学选择图层2.2.2 动手学新建图层2.2.3 动手学复制图层2.2.4 动手学删除图层2.2.5 更改图层的显示与隐藏答疑解惑如何快速隐藏多个图层2.2.6 调整图层的排列顺序答疑解惑如果图层位于图层组中排列顺序会是怎样2.2.7 动手学背景和图层的转换2.2.8 修改图层的名称与颜色2.3
移动图像内容2.3.1 认识移动工具2.3.2 在同一个文档中移动图像2.3.3 在不同的文档间移动图像2.3.4 移动复制案例实战——使用移动工具调整图层位置2.4
图像的基础操作2.4.1 动手学剪切与粘贴视频课堂——剪切并粘贴图像2.4.2 拷贝与合并拷贝视频课堂——从Illustrator中复制元素到Photoshop2.4.3 清除图像2.5
撤销/返回操作与恢复2.5.1 动手学还原与重做2.5.2 前进一步与后退一步2.5.3 恢复2.5.4 动手学使用“历史记录”面板还原操作技术拓展详解“历史记录”面板2.6
使用常用的辅助工具2.6.1 动手学标尺与参考线答疑解惑怎样显示出隐藏的参考线2.6.2 智能参考线答疑解惑如何显示隐藏额外内容2.6.3 网格2.6.4 对齐课后练习——合并拷贝全部图层本章小结第3章
图像基本编辑操作 视频演示14分钟3.1
调整图像大小与分辨率思维点拨“位图”图像3.1.1 修改图像像素大小思维点拨关于“像素”3.1.2 动手学修改图像文档大小3.1.3“图像大小”选项设置答疑解惑画布大小和图像大小有区别吗3.1.4 自动限制图像大小3.2
调整画面显示区域3.2.1 详解裁剪工具3.2.2 动手学使用裁剪工具调整画面构图案例实战——调整人像照片画面构图3.2.3 动手学使用透视裁剪工具裁剪出透视效果3.2.4 使用“裁剪”命令去除图像多余部分3.2.5 动手学使用“裁切”命令去除图像留白技术拓展“裁切”参数详解3.2.6 显示完整图像大小思维点拨了解纸张的基础知识3.3
动手学旋转图像3.4
案例实战——裁切并修齐扫描照片3.5
变换与变形3.5.1 使用“变换”命令对图像进行变换视频课堂——利用“缩放”和“扭曲”命令制作书籍包装3.5.2 动手学使用“自由变换”命令3.5.3 配合快捷键使用自由变换3.5.4 动手学自由变换并复制图像案例实战——使用“自由变换”命令将照片放到合适位置3.5.5 使用“内容识别比例”命令进行智能缩放案例实战——利用“内容识别比例”命令缩放图像3.5.6 使用“操控变形”命令调整人物形态思维点拨关于操作变形工具案例实战——使用操控变形改变舞者姿势答疑解惑怎么在图像上添加与删除图钉3.6
图层的对齐与分布3.6.1 动手学对齐多个图层3.6.2 动手学以某个图层为基准来对齐图层3.6.3 动手学将图层与选区对齐3.6.4 动手学将多个图层均匀分布案例实战——使用“对齐”与“分布”命令调整网页版式3.6.5 自动对齐图层3.6.6 自动混合图层案例实战——使用“自动混合”功能制作全幅风景课后练习1——利用自由变换制作飞舞的蝴蝶课后练习2——使用“对齐”与“分布”命令制作标准照本章小结第4章
选区的编辑与应用 视频演示24分钟4.1
认识选区4.1.1 选区的基本功能4.1.2 选区与抠图4.1.3 抠图常用技法4.2
轻松制作简单选区4.2.1 矩形选框工具案例实战——使用矩形选框工具制作奇异建筑4.2.2 椭圆选框工具案例实战——制作活泼的圆形标志4.2.3 单行/单列选框工具4.3
选区的基本操作4.3.1 取消选择与重新选择4.3.2 全选4.3.3 选择反向的选区4.3.4 载入图层选区4.3.5 动手学移动选区4.3.6 选区的显示与隐藏4.3.7 选区的运算4.3.8 动手学变换选区视频课堂——使用变换选区制作投影4.3.9 存储选区4.3.10 为选区描边视频课堂——制作简约海报4.4
常用的创建选区的工具与命令4.4.1 套索工具4.4.2 多边形套索工具案例实战——使用多边形套索工具将照片合成到画面中视频课堂——利用多边形套索工具选择照片4.4.3 磁性套索工具案例实战——使用磁性套索工具制作选区视频课堂——使用磁性套索工具换背景制作卡通世界4.4.4 快速选择工具案例实战——使用快速选择工具为人像照片抠图4.4.5 魔棒工具案例实战——使用魔棒工具去除背景4.4.6 使用“色彩范围”命令制作选区思维点拨色域案例实战——使用色彩范围提取选区4.5
编辑选区的形态4.5.1 调整边缘4.5.2 动手学使用智能的“边缘检测”4.5.3 创建边界选区4.5.4 平滑选区4.5.5 扩展选区4.5.6 收缩选区4.5.7 羽化选区4.5.8 扩大选取4.5.9 选取相似答疑解惑“扩大选取”和“选取相似”有什么差别课后练习——时尚插画风格人像】本章小结第5章
填充与绘画 视频演示14分钟5.1 颜色的设置与管理5.1.1 前景色与背景色5.1.2 使用拾色器选取颜色答疑解惑什么是“Web安全色”思维点拨认识“颜色库”5.1.3 动手学使用吸管工具选取颜色5.1.4 动手学利用“颜色”面板设置前景色/背景色5.1.5 动手学使用“色板”面板管理颜色5.2 填充画面5.2.1 快速使用前景色/背景色进行填充5.2.2 使用“填充”命令5.2.3 使用油漆桶工具填充纯色或图案5.2.4 填充渐变效果5.2.5 详解渐变编辑器5.3 设置画笔类工具的笔尖属性5.3.1“画笔预设”面板5.3.2“画笔”面板5.3.3 笔尖形状设置5.3.4 形状动态5.3.5 散布5.3.6 纹理5.3.7 双重画笔5.3.8 颜色动态案例实战——使用“颜色动态”选项制作多彩花朵5.3.9 传递案例实战——使用“传递”选项制作飘雪效果5.3.10 画笔笔势5.3.11 其他选项案例实战——使用多种画笔设置制作散景效果思维点拨散景视频课堂——海底创意葡萄酒广告5.4 使用画笔与铅笔进行绘画5.4.1 画笔工具案例实战——调整画笔间距制作日历5.4.2 铅笔工具思维点拨像素画5.5 使用橡皮擦工具擦除图像5.5.1 橡皮擦工具5.5.2 背景橡皮擦工具案例实战——使用背景橡皮擦工具擦除背景5.5.3 魔术橡皮擦工具案例实战——使用魔术橡皮擦工具去除背景天空课后练习——为婚纱照换背景本章小结第6章
数码照片编修 视频演示20分钟6.1 修复照片局部瑕疵6.1.1 仿制图章工具案例实战——使用仿制图章工具修补草地视频课堂——使用仿制图章工具修补天空6.1.2 图案图章工具6.1.3“仿制源”面板6.1.4 污点修复画笔工具案例实战——使用污点修复画笔工具祛斑6.1.5 修复画笔工具案例实战——使用修复画笔工具去皱纹6.1.6 修补工具案例实战——使用修补工具去除黑眼圈6.1.7 内容感知移动工具6.1.8 红眼工具答疑解惑 “红眼”还有哪些处理方法6.1.9 历史记录画笔工具案例实战——使用历史记录画笔还原局部效果6.1.10 历史记录艺术画笔工具6.2 常用的图像润饰工具6.2.1 模糊工具案例实战——使用模糊工具制作景深效果思维点拨景深的作用与形成原理6.2.2 锐化工具6.2.3 涂抹工具6.2.4 减淡工具6.2.5 加深工具案例实战——使用减淡/加深工具美化人像6.2.6 海绵工具6.2.7 颜色替换工具案例实战——使用颜色替换工具改变花朵颜色答疑解惑为什么要复制背景图层6.2.8 混合器画笔工具6.3 数码照片处理常用滤镜6.3.1 动手学使用“自适应广角”滤镜矫正广角畸变技术拓展详解“自适应广角”滤镜思维点拨镜头的视角6.3.2 使用“镜头校正”滤镜修复常见镜头瑕疵6.3.3 使用“液化”滤镜轻松扭曲图像案例实战——使用“液化”滤镜为美女瘦身6.3.4 使用“油画”滤镜思维点拨油画案例实战——使用“油画”滤镜制作淡彩油画6.3.5 动手学使用“消失点”滤镜修复透视画面
【文明转载,互利你我;原文网址:/ZiLiao/716470,本文版权归90下载所有。】
更多推荐:}

我要回帖

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信