精华内容
下载资源
问答
  • 各位朋友们好,我有一张图片1.png,另一张图片2.png,图片1与图片2只有一部分不相同部分,现在我想以图片1为参照物,把图片2与图片1不同部分裁剪出来形成图片3,请教各位做图像处理大神们应该怎么做,或者有...
  • 现有一批二值图像,化成png大概是这样: ![图片说明]...我想要通过读二值图图像把每个矩形和多边形都提取出来,并标注长和宽,有什么比较方便写法或者合适好用包吗?
  • matlab实现彩色图像的hough直线检测

    千次阅读 2020-04-28 12:26:33
    假设有一幅图像,经过滤波,边缘检测等操作,那么接下来的问题就是怎么把这张图片中的直线提取出来。基本的思考流程是:如果直线 y=mx+b 在图片中,那么图片中,必需有N多点在直线上(像素点代入表达式成立),只要...

    matlab实现彩色图像的hough直线检测

    原理描述

    霍夫变换是用来检测图像中的直线或者圆等几何图形的。一条直线的表示方法有好多种,最常见的是 y=mx+b 的形式。 假设有一幅图像,经过滤波,边缘检测等操作,那么接下来的问题就是怎么把这张图片中的直线提取出来。基本的思考流程是:如果直线 y=mx+b 在图片中,那么图片中,必需有N多点在直线上(像素点代入表达式成立),只要有这条直线上的两个点,就能确定这条直线。该问题可以转换为:求解所有的(m,b)组合。
    设置两个坐标系,左边的坐标系表示的是(x,y)值,右边的坐标系表达的是(m,b)的值,即直线的参数值。那么一个(x,y)点在右边对应的就是是一条线,左边坐标系的一条直线就是右边坐标系中的一个点。这样,右边左边系中的交点表示有多个点经过(m,b)确定的直线。但是,该方法存在一个问题(m,b)的取值范围太大。
    在笛卡尔坐标系中会存在参数问题,垂直线的斜率不存在(或无限大),这使得斜率参数mm的值接近于无限。为此,为了更好的计算,Richard O. Duda和Peter E. Hart在1971年4月,提出了极坐标系。其中r是原点到直线上最近点的距离,\theta是x轴与连接原点和最近点直线之间的夹角。如下图所示:
    在这里插入图片描述
    对于一般的点(x_{0}, y_{0})来说,可以将通过这个点的一族直线统一定义为:r0=x0  cosθ+y0  sinθr_{0}=x_{0}\cdot\;cos\theta+y_{0}\cdot\;sin\theta,这就意味着对于每一对(r_{0}, cos\theta)代表一条通过点(x_{0},y_{0})的直线。如果对于一个给定点(x_{0},y_{0})我们在极坐标对极径极角平面绘出所有通过它的直线,将得到一条正弦曲线。正弦曲线的形状取决于,点到所定义原点的距离r。通常r越大,正弦曲线的振幅越大,反之则会越小。例如, 对于给定点x_{0}=8,y_{0}=6我们可以绘出r=8\cdot;cos\theta+6\cdot;sin\theta的图像 (满足条件r>0,0<\theta<2\pi):
    在这里插入图片描述
    所以我们可以得到一个结论,给定平面中的单个点,那么通过该点的所有直线的集合对应于(r,θ)平面中的正弦曲线,这对于该点是独特的。一组两个或更多点形成一条直线将产生在该线的(r,θ)处交叉的正弦曲线。因此,检测共线点的问题可以转化为找到并发曲线的问题。
    继续添加两个点(9,4)和(12,3)得到如下正弦图像:
    在这里插入图片描述
    这三条曲线在平面\theta-r相交于点 (0.925, 9.6), 坐标表示的是参数对(\theta, r)或者是说点(x_{0}, y_{0}), 点(x_{1}, y_{1})和点(x_{2}, y_{2})组成的平面内的直线。一般来说,一条直线能够通过在平面\theta-r寻找交于一点的曲线数量来检测。而越多曲线交于一点也就意味着这个交点表示的直线由更多的点组成,一般来说我们可以通过设置直线上点的阈值来定义多少条曲线交于一点我们才认为检测到了一条直线。这就是霍夫线变换要做的,它追踪图像中每个点对应曲线间的交点,如果交于一点的曲线的数量超过了阈值,那么可以认为这个交点所代表的参数对\theta-r在原图像中为一条直线。

    代码

    function result = hough(image)
    image = double(image);
    [rows,cols,v] = size(image); % 图像行列数
    gray = uint8(zeros([rows,cols]));
    for i=1:rows
        for j=1:cols
            gray(i,j)=0.299*image(i,j,1)+0.587*image(i,j,2)+0.11400*image(i,j,3);% 灰度化
        end
    end
    temp = int16(zeros([rows+2,cols+2]));
    temp(2:rows+1,2:cols+1) = gray;
    result = uint8(zeros([rows,cols]));
    % Roberts边缘检测
    for i = 2:(rows + 1)
        for j = 2:(cols + 1)
            result(i-1,j-1) = abs(temp(i+1,j+1)-temp(i,j))+abs(temp(i,j+1)-temp(i+1,j));
            if result(i-1,j-1) <= 45
                result(i-1,j-1) = 0;
            else
                result(i-1,j-1) = 255;
            end
        end                                                
    end
    % matlab_roberts=edge(gray,'roberts');
    % imwrite(matlab_roberts,'matlab_roberts.jpg');
    imwrite(result,'roberts_result.jpg');
    imshow(result);
    title('roberts算子边缘检测结果');
    pmax=round((rows*rows+cols*cols)^0.5);
    A=zeros(2*pmax,180);   % [-pmax,pmax]转换为[1,2pmax]
    for x=1:rows
        for y=1:cols
            if result(x,y)==255
                for theta=1:180
                    radian=theta/180*pi; 
                    p=round(x*cos(radian)+y*sin(radian));
                    p=p+pmax;                  % 对应前面的坐标变换
                    A(p,theta)=A(p,theta)+1;   % 数量统计
                end
            end
        end
    end
    [p,theta]=find(A>200);  % 找出数量超过两百的
    number=length(p);       % 直线条数
    x=1:rows;               % 直线横坐标
    figure,imshow(result)
    for i=1:number
        hold on             % 在作下一幅图时保留已有图像
        radian=theta(i)/180*pi;
        y=(p(i)-pmax-x*cos(radian))/sin(radian);  % 直线纵坐标
        plot(y,x,'w-','LineWidth',1);             % 画直线
    end
    title('hough直线检测结果');
    % 测试代码
    % image = imread('hough.jpg');
    % res = hough(image);
    
    

    实验结果

    本实验手动灰度化后采用了roberts算子进行边缘检测,阈值选择为45,hough共线点数过200则确认为对应直线。
    在这里插入图片描述

    展开全文
  • 比如我想把图像中r=1,g=0,b=1 像素提取出来。在表达式节点里,怎么写表达式才能添加多个判断条件? 相当于 if (r==1 and g==0 and b==1 ), 同时满足这三点像素被显示出来,alpha通道设置为1。其他像素都是...
  • GEE了利用霍夫变换提取几何图形 本文利用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');
    

    来看看运行结果
    蓝色为边缘检测得到结果
    红色为霍夫变换检测结果,明显比边缘检测得到少
    在这里插入图片描述

    展开全文
  • 那么需要变换点可能就从10000个点降到可能1000个点了,这也就是为什么看到许多hough变换提取形状时为什么要把图像提取轮廓,变成二值图像了。 继续算法,分析这么多,可想而知那么一个hough变换在算法设计上就...
  • 所以基于这个问题,尺度不变特征变换(SIFT)出现了,这个算法可以帮助我们提取图像中的关键点并计算它们的描述符。 • 尺度空间极值检测 • 关键点精准定位与过滤 • 关键点方向指派 • 描述子生成 1. ...
  • 3.1.23 如何可以构建一个基元图像的基,从而用最优的方式描述完整的图像集合? 146 3.2 卡洛变换 147 3.2.1 什么是卡洛变换? 147 3.2.2 为什么一个图像集合的自协方差矩阵对角化定义了描述集合图像所需的基?...
  • 关于这个裁剪功能,在程序中的图像裁剪中有一个说明按钮,在设计报告中有提到怎么使用的,所以在这里就不一一说明了,其实就跟在PS上用裁剪差不多,很容易用的。 关于设计的感想也写在了设计报告上了- -,这里也就...
  • 已经用opencv对2副图片进行了SIFT特征点匹配,那么这一对一对特征点存储在哪里呢,怎么提取其中一对特征点坐标? #include "stdafx.h" #include #include #include "opencv2/core/core.hpp"//因为在属性...
  • 2.查阅了一些有关SURF的资料,上面说它和SIFT算法中的一个不同是SURF算法在生成尺度空间的过程中图片的大小是始终不变的,但是也有不同的octave层,资料上说生成不同octave层的原因是改变高斯模糊尺寸大小得到的,那...
  • 卷积神经网络其实是一个函数,也可以说它是一个黑箱,输入是一个二维像素阵列,也就是...比如这三个特征提取出来,叫做卷积核,或者特征提取器,用于在输入图寻找相应特征 下面介绍一下,卷积核是怎样判...

    卷积神经网络其实是一个函数,也可以说它是一个黑箱,输入是一个二维的像素阵列,也就是图片,输出就是这个图片是什么
    在这里插入图片描述
    就是将这些经过平移,旋转,局部加粗等的图像辨别出来,抗干扰性很强
    在这里插入图片描述
    对于计算机来说,怎么用数字进行特征提取是非常重要的,即使图像进行了一定的改变,但也会保留原始图的特征
    在这里插入图片描述
    比如把这三个特征提取出来,叫做卷积核,或者特征提取器,用于在输入图中寻找相应的特征
    在这里插入图片描述
    下面介绍一下,卷积核是怎样判断特征的,让卷积核与图片对应相乘,得出结果为九个一的矩阵,将这些得出来的数做平均值
    在这里插入图片描述
    在这里插入图片描述
    这就表示绿框中的的值和卷积核的特征完全一致
    在这里插入图片描述
    那么如果卷积核与图像的其他部分做卷积运算呢
    当该卷积核与中间部分进行卷积时,情况如下:
    在这里插入图片描述
    它加起来平均值为0.55,表示他俩不一样,但仍保留了0.55的特征,把所有的数据算出来是这样的,颜色越浅表示相似度越高
    在这里插入图片描述
    用不同的卷积核可以把不同的特征提取出来
    在这里插入图片描述
    因为实际的识别涉及到的特征和图片很大,所以要将得到的矩阵缩小,把一部分的矩阵得出的数用一个数字表示,这也叫做池化
    在这里插入图片描述
    也就是在可接受范围内牺牲一部分值,池化有两种方式,一是取最大值,二是取平均值,应用都非常广
    在这里插入图片描述
    以取最大值为例,将上面的矩阵缩小,得到的特征仍会保留,如果计算需要,在外圈补零
    在这里插入图片描述
    接下来使用激活函数将上面矩阵的负数全部抹成零,经过卷积,抹零(激活函数是relu),池化,得到:
    在这里插入图片描述
    以上过程可以进行多次

    全连接层
    将得到的矩阵排成一列
    在这里插入图片描述
    每一个像素点都有权重,把判断x的权重加起来,就可以得到一个概率,这是要通过训练得到的

    在这里插入图片描述
    x的概率是0.92,o的概率是0.51,所以认为图的特征是x
    全连接网络可以放好多层
    在这里插入图片描述

    用大量图片去训练模型,通过反向传播的方法,将它与真实的结果进行比较,然后将神经网络的结果与真实结果的误差进行计算,这叫损失函数,我们的目标就是将损失函数降到最低(求导获得最低值),通过将卷积核和权重进行微调使得误差函数最小,他会将误差一层层反馈回去,所以叫反向传播。
    经过大量训练,他就自动学会了选择卷积核和选择权重,这就是机器学习。

    展开全文
  • 得到一张数据表如下,现在想把图片中的数字提取出来,之前一直是用在线转换网站:https://ocr.wdku.net/进行处理,结果今天用太频繁了,不让我免费用,居然想跟我收钱,我怎么可能交这种钱呢,于是就打算自己花点...
  • 飞秋(FeiQ)是一款局域网聊天传送文件的绿色软件,它参考了飞鸽传书(IPMSG)和QQ, 完全兼容飞鸽传书(IPMSG)协议,具有局域网传送方便,速度快,操作简单的优点,同时具有QQ中的一些功能。 功能说明: - 飞秋(FeiQ)是一款...
  • 实质上最后transformation_from_points就是得到了一个转换矩阵,第一幅图片中的人脸可以通过这个转换矩阵映射到第二幅图片中,与第二幅图片中的人脸对应。 点云匹配 PCL Umeyama是一种PCL算法,简单点来理解就是将...
  • 利用是双目成像技术,左图和右图合起来提取出空间点,用光流在上面做,就能场景流动分析出来。 光流也可以利用深度学习模型来做,左右两图用同样模型来提取特征,经过计算就能得出一个深度...
  • 飞秋2013专业版

    2014-06-24 10:54:48
    可通过程序参数来控制,方法是:先创建飞秋快捷方式,然后右键点击快捷方式菜单中的属性,在快捷方式栏中的目标后面加上参数 /local,如你程序在飞秋FeiQ.exe,则加参数后为飞秋FeiQ.exe /local,这样的话,所有...
  • 飞秋(FeiQ)是一款局域网聊天传送文件的绿色软件,它参考了飞鸽传书(IPMSG)和QQ, 完全兼容飞鸽传书(IPMSG)协议,具有局域网传送方便,速度快,操作简单的优点,同时具有QQ中的一些功能。 功能说明: - 飞秋(FeiQ)是一款...
  • 飞秋FeiQv2.4修正版

    2008-11-23 17:27:11
    飞秋(FeiQ)是一款局域网聊天传送文件的绿色软件,它参考了飞鸽传书(IPMSG)和QQ, 完全兼容飞鸽传书(IPMSG)协议,具有局域网传送方便,速度快,操作简单的优点,同时具有QQ中的一些功能。 功能说明: - 飞秋(FeiQ)是一款...
  • asp.net知识库

    2015-06-18 08:45:45
    ASP.NET 中的正则表达式 常用的匹配正则表达式和实例 经典正则表达式 delegate vs. event 我是谁?[C#] 表达式计算引擎 正式发布表达式计算引擎WfcExp V0.9(附源码) 运算表达式类的原理及其实现 #实现的18位身份证...
  • vc++ 开发实例源码包

    2014-12-16 11:25:17
    引用了Splayer中的Sqlite3库,进行了测试。 SrcFirstProg 简单的窗口程序。 SuperGrid - 特别的 listview 控件 网格形式的视图,自绘了CComboBox、CEdit、CSuperGridCtrl实现。 tab 演示了CTabCtrl控件的使用方法...
  • 筛选出了一部分匹配结果,怎么用这些线段用到特征点提出来,我想做一个包围盒,谢谢谢谢 ![图片说明](https://img-ask.csdn.net/upload/201602/19/1455858748_415350.jpg) int main(int argc,char* argv[]) ...
  • vc++ 应用源码包_1

    热门讨论 2012-09-15 14:22:12
    非常好一个实例,网络连接UDP/TCP都插入到CList控件显示出来。 VC++视频捕捉系统 win32下 视频操作。 VC++视频会议系统(完整)有开发文档。使用了系统自带视频。 Windows核心编程(第五版)随书源代码 ...
  • vc++ 应用源码包_2

    热门讨论 2012-09-15 14:27:40
    非常好一个实例,网络连接UDP/TCP都插入到CList控件显示出来。 VC++视频捕捉系统 win32下 视频操作。 VC++视频会议系统(完整)有开发文档。使用了系统自带视频。 Windows核心编程(第五版)随书源代码 ...
  • vc++ 应用源码包_6

    热门讨论 2012-09-15 14:59:46
    非常好一个实例,网络连接UDP/TCP都插入到CList控件显示出来。 VC++视频捕捉系统 win32下 视频操作。 VC++视频会议系统(完整)有开发文档。使用了系统自带视频。 Windows核心编程(第五版)随书源代码 ...
  • vc++ 应用源码包_5

    热门讨论 2012-09-15 14:45:16
    非常好一个实例,网络连接UDP/TCP都插入到CList控件显示出来。 VC++视频捕捉系统 win32下 视频操作。 VC++视频会议系统(完整)有开发文档。使用了系统自带视频。 Windows核心编程(第五版)随书源代码 ...

空空如也

空空如也

1 2
收藏数 33
精华内容 13
关键字:

怎么把图片中的图像提取出来