-
怎么把线稿提取出来_【小技巧】PS提取线稿的三种方法
2021-01-04 08:30:17方法一 蒙版提线第一步,在PS里面打开一张图片在PS里面复制一层图层接下来我们运用一下快捷键按Ctrl+A全选图层,按Ctrl+C复制一层图形,之后按Q键进入快速蒙版。进入快速蒙版以后,颜色条会变成只有很白跟灰度的调节...大家看到一些漂亮的作品的时候,想拿过来自己上色,却总是苦恼不知道该怎么抠出线稿,那么今天鳗鱼君给大家介绍一下怎样用PS去抠出线稿。
方法一 蒙版提线
第一步,在PS里面打开一张图片
在PS里面复制一层图层 接下来我们运用一下快捷键
按Ctrl+A全选图层,按Ctrl+C复制一层图形,之后按Q键进入快速蒙版。
进入快速蒙版以后,颜色条会变成只有很白跟灰度的调节 然后按Ctrl+V复制图层,按Q键退出快速蒙版
这个时候线稿已经锁定出来了 接下来按Delete删除键,再按Ctrl+D删除蚂蚁线。
把背景图层隐藏掉就可以看到清晰的线稿了 线稿不清晰可以按Ctrl+Shift+U把明度调黑即可 方法二 利用通道提取线稿
首先打开PS,拖动一张图片到PS里面
复制一层图层,并且将背景图层填充成白色。
选择通道按住Ctrl点击RGB图层
然后点击图层返回到图层界面,按Ctrl+D消除蚂蚁线。
这样就可以提取出线稿出来了
方法三 上色图片如何提取线稿
我们还是在PS里面继续打开一张图片
按住Shift+Ctrl+U去色
快捷键可以极大的加大我们在作图时候效率。
按Ctrl+C再按Ctrl+V复制一层图形,然后我们在正常图层上面选择变为划分。
这个时候图层应该变成白色了 选择——滤镜模糊——高斯模糊
然后合并两张图层之后,我们就可以得到黑白的图形了。
之后的方法就很简单了。还记的我们上面说过提取线稿的方法吗??照着做就好了,今天的教程就到这里啦~感谢大家的支持,喜欢的可以持续关注我们!
-
精雕软件怎么把图片转成灰度图_ImageJ数值化色谱图
2020-12-28 11:17:03下图是一张色谱条带我们需要将其做成下面的图形放在论文中,该怎么弄呢,赶紧来学学的吧!软件FIJI 或ImageJ软件,Origin2019b软件图文教程数据提取1. 使用FIJI打开图片(直接拖拽进去即可),这里我使用的是原始图2. ...导言
图像具有一定的灰度数值,利用这个属性我们可以将实验图片进行数值化,进而进行可视化,达到定性和定量的相结合,将其应用在论文中是一个不错的选择。
下图是一张色谱条带
我们需要将其做成下面的图形放在论文中,该怎么弄呢,赶紧来学学的吧!
软件
FIJI 或ImageJ软件,Origin2019b软件
图文教程
数据提取
1. 使用FIJI打开图片(直接拖拽进去即可),这里我使用的是原始图
2. 我们选择第一条条带进行演示,使用矩形工具进行框选择第一条条带,点击菜单栏-Image-Crop,进行裁剪
3. 点击左上角File-Save as另存为图片备用
4. 使用直线工具画一条直线在条带上,然后双击直线工具,可以将线条调整的粗一点
5. 点击直线分析,Analyze-Plot Profile
6. 在这里就会出现一张类似的色谱曲线图,其中左下角会有一些参数。点击List,就会出现图形的对应的数据,点击Data你可以将数据保存在csv格式的文件中,点击more你可以对横纵坐标进行设置。这里,我们将数据保存在csv文件中,以方便日后使用。
软件作图
1. 使用Origin进行作图,将上述数据复制进来,写好纵坐标,横坐标是像素值,我们就不显示了
2. 通过一系列基础设置就如下所示
3. 进行导出图即可
一键组图
1. 使用AI/PS/Origin/PPT软件,进行组图,然后导出图片即可
怎么样,今天的教程学会了吗?
-
图形图像处理之——实现图形图像之子区域提取2
2012-12-25 21:43:07折腾了好久,还是没折腾出来,不过还是有点点进步,看看这么一张图片,我是怎么实现对6个莲子的提取的。 还是把代码贴出来,分享给大家,也请大家给提点建议。 image=imread('E:\qw1.jpg'); %%%背景的...折腾了好久,还是没折腾出来,不过还是有点点进步,看看这么一张图片,我是怎么实现对6个莲子的提取的。
还是把代码贴出来,分享给大家,也请大家给提点建议。
image=imread('E:\qw1.jpg'); %%%背景的质心 indimage=rgb2ind(image,map);%将待处理图片转换为索引图像 [height,width]=size(indimage);%计算灰度索引图像的长宽 backgroud1=zeros(height, width);%创建背景(全0) backgroud1=~backgroud1;%背景取反,目的是求质心 bckg_zhixin=regionprops(backgroud1,'Centroid');%求背景的质心 backgroud1=~backgroud1;%背景取反,恢复黑色。 bckg_x=bckg_zhixin.Centroid(1);%背景质心X坐标 bckg_y=bckg_zhixin.Centroid(2);%背景质心y坐标 %%%处理图片,提取6个贝母的边缘 [H,S,V]=rgb2hsv(image);%step1:获取图片HSV分量,分别代表色调,饱和度,亮度 hMedian=median(median(H));%step2:提取中位数以下H分量,进行二值化 hBw1=im2bw(H,hMedian);%step3:二值化,阈值为hMedian HBelowMedian=H.*(~hBw1);%step4:剩余H二值化 hBw2=im2bw(HBelowMedian,graythresh(HBelowMedian));%二值化,阈值为graythresh(HBelowMedian) for i=1:size(image,1) bwImage(i,:)=bitxor(hBw1(i,:),hBw2(i,:));%%将hBw1和hBw2异或得到结果 end bwImage=~bwImage;%图像取反 [B0,L0] = bwboundaries(bwImage,'noholes');%边界跟踪,返回划分的区域L0,noholes算法只搜索目标的外边界。 stats = regionprops(L0,'Area');%regionprops测量每个标签区域L0的属性 [sortAfter,Index] = sort([stats(:,:).Area],'descend');%对数组进行降序排序,并返回排序后的数组,Index为返回的排序后元素在原数组中的行位置或列位置. %%%处理第一个贝母 LL1 = ismember(L0,Index(1));%判断一个集合是否为另一个的子集,此地方是。 bwImage1 = bwlabel(LL1);%进行标注 bwImage1 = imfill(bwImage1,'holes');%%对二值图像中的目标孔进行填充点 stats1=regionprops(bwImage1,'Centroid'); x1=stats1.Centroid(1)% 求的图像1质心的坐标 y1=stats1.Centroid(2)% 求的图像1质心的坐标 indimage=rgb2ind(image,map);%将待处理图片转换为索引图像 [height,width]=size(indimage);%计算灰度索引图像的长宽 for i=1:height for j=1:width if bwImage1(i,j)==0 indimage(i,j)=0; end end end iimage1=ind2rgb(indimage,map);%将处理后的索引图像转换为真彩色图像 if x1>=bckg_x image1move_x=x1-bckg_x;%贝母移动x坐标 else image1move_x=bckg_x-x1;%贝母移动x坐标 end if y1>=bckg_y image1move_y=y1-bckg_y;%贝母移动y坐标 else image1move_y=bckg_y-y1;%贝母移动y坐标 end for i=1:height for j=1:width if iimage1(i,j)~=0 iimage1(fix(i-image1move_x),fix(j-image1move_y))=iimage1(i,j); end end end rect=[bckg_x-80 bckg_y-80 bckg_x+80 bckg_y+80]; showimage1=imcrop(iimage1,rect);% 用imcrop裁剪: figure; imshow(showimage1); imwrite(showimage1,'showimage1.bmp') title('1'); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% LL2 = ismember(L0,Index(2));%判断一个集合是否为另一个的子集,此地方是。 bwImage2 = bwlabel(LL2);%进行标注 bwImage2 = imfill(bwImage2,'holes');%%对二值图像中的目标孔进行填充点 stats2=regionprops(bwImage2,'Centroid'); x2=stats2.Centroid(1)% 求的图像2质心的坐标 y2=stats2.Centroid(2)% 求的图像2质心的坐标 indimage=rgb2ind(image,map);%将待处理图片转换为索引图像 [height,width]=size(indimage);%计算灰度索引图像的长宽 for i=1:height for j=1:width if bwImage2(i,j)==0 indimage(i,j)=0; end end end iimage2=ind2rgb(indimage,map);%将处理后的索引图像转换为真彩色图像 % figure; % imshow(iimage2); % title('2'); rect=[x2-80 y2-80 x2+80 y2+80]; a2=imcrop(iimage2,rect);% 用imcrop裁剪: figure; imshow(a2); imwrite(a2,'a2.bmp') %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% LL3 = ismember(L0,Index(3));%判断一个集合是否为另一个的子集,此地方是。 bwImage3 = bwlabel(LL3);%进行标注 bwImage3 = imfill(bwImage3,'holes');%%对二值图像中的目标孔进行填充点 stats3=regionprops(bwImage3,'Centroid'); x3=stats3.Centroid(1)% 求的图像3质心的坐标 y3=stats3.Centroid(2)% 求的图像3质心的坐标 indimage=rgb2ind(image,map);%将待处理图片转换为索引图像 [height,width]=size(indimage);%计算灰度索引图像的长宽 for i=1:height for j=1:width if bwImage3(i,j)==0 indimage(i,j)=0; end end end iimage3=ind2rgb(indimage,map);%将处理后的索引图像转换为真彩色图像 % figure; % imshow(iimage3); % title('3'); rect=[x3-80 y3-80 x3+80 y3+80]; a3=imcrop(iimage3,rect);% 用imcrop裁剪: figure; imshow(a3); imwrite(a3,'a3.bmp') %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% LL4 = ismember(L0,Index(4));%判断一个集合是否为另一个的子集,此地方是。 bwImage4 = bwlabel(LL4);%进行标注 bwImage4 = imfill(bwImage4,'holes');%%对二值图像中的目标孔进行填充点 stats4=regionprops(bwImage4,'Centroid'); x4=stats4.Centroid(1)% 求的图像4质心的坐标 y4=stats4.Centroid(2)% 求的图像4质心的坐标 indimage=rgb2ind(image,map);%将待处理图片转换为索引图像 [height,width]=size(indimage);%计算灰度索引图像的长宽 for i=1:height for j=1:width if bwImage4(i,j)==0 indimage(i,j)=0; end end end iimage4=ind2rgb(indimage,map);%将处理后的索引图像转换为真彩色图像 % figure; % imshow(iimage4); % title('4'); rect=[x4-80 y4-80 x4+80 y4+80]; a4=imcrop(iimage4,rect);% 用imcrop裁剪: figure; imshow(a4); imwrite(a4,'a4.bmp') %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% LL5 = ismember(L0,Index(5));%判断一个集合是否为另一个的子集,此地方是。 bwImage5 = bwlabel(LL5);%进行标注 bwImage5 = imfill(bwImage5,'holes');%%对二值图像中的目标孔进行填充点 stats5=regionprops(bwImage5,'Centroid'); x5=stats5.Centroid(1)% 求的图像5质心的坐标 y5=stats5.Centroid(2)% 求的图像5质心的坐标 indimage=rgb2ind(image,map);%将待处理图片转换为索引图像 [height,width]=size(indimage);%计算灰度索引图像的长宽 for i=1:height for j=1:width if bwImage5(i,j)==0 indimage(i,j)=0; end end end iimage5=ind2rgb(indimage,map);%将处理后的索引图像转换为真彩色图像 % figure; % imshow(iimage5); % title('5'); rect=[x5-80 y5-80 x5+80 y5+80]; a5=imcrop(iimage5,rect);% 用imcrop裁剪: figure; imshow(a5); imwrite(a5,'a5.bmp') %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% LL6 = ismember(L0,Index(6));%判断一个集合是否为另一个的子集,此地方是。 bwImage6 = bwlabel(LL6);%进行标注 bwImage6 = imfill(bwImage6,'holes');%%对二值图像中的目标孔进行填充点 stats6=regionprops(bwImage6,'Centroid'); x6=stats6.Centroid(1)% 求的图像6质心的坐标 y6=stats6.Centroid(2)% 求的图像6质心的坐标 indimage=rgb2ind(image,map);%将待处理图片转换为索引图像 [height,width]=size(indimage);%计算灰度索引图像的长宽 for i=1:height for j=1:width if bwImage6(i,j)==0 indimage(i,j)=0; end end end iimage6=ind2rgb(indimage,map);%将处理后的索引图像转换为真彩色图像 % figure; % imshow(iimage6); % title('6'); rect=[x6-50 y6-50 x6+50 y6+50]; a6=imcrop(iimage6,rect);% 用imcrop裁剪: figure; imshow(a6); imwrite(a6,'a5.bmp') %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
最后运行情况也贴出来吧。做到现在这个情况,当然还没有实现想要的效果,但是基本的框架已经搭好了,现在的问题还有2个。1是平移,可以看见我们运行后的第一张图片,我是进行了平移处理的(即把莲子的质心移动到背景的中心点),也不知道哪里的原因,运行出来时那种情况。2是截取图像,我的想法是把平移好的莲子,通过imcorp函数实现,但是也存在一点点问题,老是截出来的图大小不一。请各位大虾帮帮忙啊。
-
Google Earth Engine(GEE)实例代码学习十二——霍夫变换(Hough Transform)提取几何图形
2020-04-19 21:33:01GEE了利用霍夫变换提取几何图形 本文利用GEE提供的Hough Transform函数探测线或圆等几何图形。先来看看霍夫变换是什么?... 假设有一幅图像,经过滤波,边缘检测等操作,怎么把这张图片中的直线提取出来...GEE了利用霍夫变换提取几何图形
本文利用GEE提供的Hough Transform函数探测线或圆等几何图形。先来看看霍夫变换是什么?
1、霍夫变换检测直线原理
霍夫变换,英文名称Hough Transform,作用是用来检测图像中的直线或者圆等几何图形的。
一条直线的表示方法有好多种,最常见的是 y=mx+b 的形式。 假设有一幅图像,经过滤波,边缘检测等操作,怎么把这张图片中的直线提取出来。基本的思考流程是:如果直线 y=mx+b 在图片中,那么图片中,必需有N多点在直线上(像素点代入表达式成立),只要有这条直线上的两个点,就能确定这条直线。该问题可以转换为:求解所有的(m,b)组合再来看看实例代码
// 利用Landsat8影像,计算NDVI var image = ee.Image('LANDSAT/LC08/C01/T1_TOA/LC08_033032_20170719'); var ndvi = image.normalizedDifference(['B5', 'B4']); // 先利用边缘检测出边界 var canny = ee.Algorithms.CannyEdgeDetector({ image: ndvi, threshold: 0.4 }).multiply(255); // 对上述边缘检测利用霍夫变换提取直线 //inputThreshold表示大于输入值像元被考虑; //lineThreshold我理解是线上大于100个点被探测为直线 var h = ee.Algorithms.HoughTransform({ image: canny, gridSize: 256, inputThreshold: 50, lineThreshold: 100 }); // 来进行图像显示 Map.setCenter(-103.80140, 40.21729, 13); Map.addLayer(image, {bands: ['B4', 'B3', 'B2'], max: 0.3}, 'source_image'); Map.addLayer(canny.updateMask(canny), {min: 0, max: 1, palette: 'blue'}, 'canny'); Map.addLayer(h.updateMask(h), {min: 0, max: 1, palette: 'red'}, 'hough');
来看看运行结果
蓝色为边缘检测得到结果
红色为霍夫变换检测结果,明显比边缘检测得到少
-
推送转成一张图片_图片怎么转换成word?快用这个方法试一试
2020-12-14 16:16:51一般情况下,我都会把图片转换成word格式的文档,这样就可以直接提取、使用其中的文字啦。不过,现在很多常见的office工具可能都没有“图片转word”这个功能,对此我们可以使用多功能的pdf转换软件。平时,我就常用... -
matlab实现彩色图像的hough直线检测
2020-04-28 12:26:33假设有一幅图像,经过滤波,边缘检测等操作,那么接下来的问题就是怎么把这张图片中的直线提取出来。基本的思考流程是:如果直线 y=mx+b 在图片中,那么图片中,必需有N多点在直线上(像素点代入表达式成立),只要... -
cocos2d-x v3.2 FlappyBird 各个类对象具体代码分析(6)
2014-09-18 12:14:05HelpLayer类,主要放了两个图形精灵上去,一个是游戏的名字,一个是提示游戏怎么玩的,就一张图: NumberLayer类,涉及到自定义字体的制作,我们提取出来的资源里,有很多数字图片: 现在我们要把它们做成这... -
cocos2d-x v3.2 FlappyBird 各个类对象详细代码分析(6)
2015-03-12 10:01:00今天我们要讲三个类,这三个类应该算比較简单的 HelpLayer类 ...NumberLayer类,涉及到自己定义字体的制作,我们提取出来的资源里,有非常多数字图片: 如今我们要把它们做成这样... -
飞秋2013专业版
2014-06-24 10:54:48您还可以点击输入框右上角的随手涂鸭按钮,绘制出您想要表达的图形,做到图文并茂。 二、聊天时如果给对方发送图片? 总共有四种方法:一是点击随手涂鸭按钮,进行绘图模式,绘制图形发给对方。二是点击发送图形... -
飞秋FeiQv2.4修正版
2008-11-23 17:27:11您还可以点击输入框右上角的随手涂鸭按钮,绘制出您想要表达的图形,做到图文并茂。 二、聊天时如果给对方发送图片? 总共有四种方法:一是点击随手涂鸭按钮,进行绘图模式,绘制图形发给对方。二是点击发送图形... -
asp.net知识库
2015-06-18 08:45:45在C#里把ArrayList转换为Array 或 把Array转换为ArrayList C# 2.0 在.NET 2.0中,让你的组件也可以绑定 .NET20 一种简单的窗口控件UI状态控制方法 翻译MSDN文章 —— 泛型FAQ:最佳实践 Visual C# 3.0 新特性概览 C#... -
oc的图形化os选择页面无用的理由也同上 因为你不用oc去引导windows并且直接省略选择页面,所以图形化的oc界面也就没用 一定要先改三码再用,具体的教程自己百度 icloud中的查找我的mac不要打开 安全与隐私中的...
-
网管教程 从入门到精通软件篇.txt
2010-04-25 22:43:49小编的确一直都想把这方面的命令做个总结,这次辛苦老范给我们整理了这份实用的秘笈。 Bootcfg bootcfg 命令启动配置和故障恢复(对于大多数计算机,即 boot.ini 文件)。 含有下列参数的 bootcfg 命令仅在... -
vc++ 应用源码包_1
2012-09-15 14:22:12不同的是,暴风影音将Media Player Classic改成了自己的名字并加入了许多的解码器,打包成自己的产品,其实这也无可厚非,关键就在于其作者老爱把里面捆绑一些我们用不到的软件. TT--仿qq+p2p通讯(nat穿透) VC++遍历... -
vc++ 应用源码包_2
2012-09-15 14:27:40不同的是,暴风影音将Media Player Classic改成了自己的名字并加入了许多的解码器,打包成自己的产品,其实这也无可厚非,关键就在于其作者老爱把里面捆绑一些我们用不到的软件. TT--仿qq+p2p通讯(nat穿透) VC++遍历... -
vc++ 应用源码包_6
2012-09-15 14:59:46不同的是,暴风影音将Media Player Classic改成了自己的名字并加入了许多的解码器,打包成自己的产品,其实这也无可厚非,关键就在于其作者老爱把里面捆绑一些我们用不到的软件. TT--仿qq+p2p通讯(nat穿透) VC++遍历... -
vc++ 应用源码包_5
2012-09-15 14:45:16不同的是,暴风影音将Media Player Classic改成了自己的名字并加入了许多的解码器,打包成自己的产品,其实这也无可厚非,关键就在于其作者老爱把里面捆绑一些我们用不到的软件. TT--仿qq+p2p通讯(nat穿透) VC++遍历... -
vc++ 应用源码包_4
2012-09-15 14:38:35不同的是,暴风影音将Media Player Classic改成了自己的名字并加入了许多的解码器,打包成自己的产品,其实这也无可厚非,关键就在于其作者老爱把里面捆绑一些我们用不到的软件. TT--仿qq+p2p通讯(nat穿透) VC++遍历... -
vc++ 应用源码包_3
2012-09-15 14:33:15不同的是,暴风影音将Media Player Classic改成了自己的名字并加入了许多的解码器,打包成自己的产品,其实这也无可厚非,关键就在于其作者老爱把里面捆绑一些我们用不到的软件. TT--仿qq+p2p通讯(nat穿透) VC++遍历... -
arcgis工具
2012-10-22 22:37:31FILE/EXPORT MAP 然后选择相应的图片格式,此时也可设置答应的分辨率 pdi 13. 建立注记层 方法一.carvert to Ananotation ,方法二.Draw工具条 方法三.从其他地方转换注记图层 14. 查看特定区域范围内的某种地物...