2019-03-13 18:45:21 puiopp63 阅读数 1664
  • ShaderGraph从入门到实战

    大智和你一起学习ShaderGraph,在实战中探索。 课程内容 ShaderGraph的基本使用 丰富的实战案例: · 全息效果 · 边缘光效果 ·  溶解效果 · 积雪效果 · 扭曲效果 · 干扰效果 · 流光效果 · 石化效果 · 顶点动画:跳动的小球 · 游动的龙鱼 · 小草摇曳效果 · 海面效果 ·  水晶效果 · 裂缝的冰面效果 · 自定义节点的用法及改造裂缝的冰块 · 云海效果 · 雨滴涟漪效果 · 卡通渲染 所需前置知识 安装好Unity即可

    572 人正在学习 去看看 郑洪智

图像处理模块

  1. 路面图像增强
  2. 路面图像分割-图像分割预处理-K-means算法;阈值分割;形态学处理:膨胀+腐蚀
  3. 路面裂缝分类
  4. 特征提取
  5. 路面裂缝参数计算
[路面裂缝检测算法研究与实现](http://www.doc88.com/p-7377816204970.html)
2018-04-16 17:31:14 qq_16481211 阅读数 4088
  • ShaderGraph从入门到实战

    大智和你一起学习ShaderGraph,在实战中探索。 课程内容 ShaderGraph的基本使用 丰富的实战案例: · 全息效果 · 边缘光效果 ·  溶解效果 · 积雪效果 · 扭曲效果 · 干扰效果 · 流光效果 · 石化效果 · 顶点动画:跳动的小球 · 游动的龙鱼 · 小草摇曳效果 · 海面效果 ·  水晶效果 · 裂缝的冰面效果 · 自定义节点的用法及改造裂缝的冰块 · 云海效果 · 雨滴涟漪效果 · 卡通渲染 所需前置知识 安装好Unity即可

    572 人正在学习 去看看 郑洪智

裂纹检测与跟踪实现两个功能:裂纹检测和裂纹跟踪,对裂纹图像进行图像增强,对其细节特征进行突出,对裂纹的边缘提取,对于边缘提取的精度进行比较。对裂纹特征进行坐标化和骨骼化,转化为数据数组便于存储于图像文件,有利于图形的传输。
机器人实现裂纹跟踪,将裂纹的轨迹指令发送给机器人从而实现机器人的跟踪,将检测到裂纹特征数据,通过转化为机器人需要的坐标信息,发给机器人。

图像处理

在焊接过程中,会发出强光,采集得到的图像会导致图像白亮化,影响后续的图像处理。针对此现象,首先需要对获取的图像进行预处理,增强图像特征。
针对白亮的图像,先结合原色先验理论和去雾技术,增强裂纹特征,并对增强后的裂纹特征进行边缘提取,分析比较亚像素边缘检测。

2019-12-18 21:14:48 T_I_A_N_ 阅读数 45
  • ShaderGraph从入门到实战

    大智和你一起学习ShaderGraph,在实战中探索。 课程内容 ShaderGraph的基本使用 丰富的实战案例: · 全息效果 · 边缘光效果 ·  溶解效果 · 积雪效果 · 扭曲效果 · 干扰效果 · 流光效果 · 石化效果 · 顶点动画:跳动的小球 · 游动的龙鱼 · 小草摇曳效果 · 海面效果 ·  水晶效果 · 裂缝的冰面效果 · 自定义节点的用法及改造裂缝的冰块 · 云海效果 · 雨滴涟漪效果 · 卡通渲染 所需前置知识 安装好Unity即可

    572 人正在学习 去看看 郑洪智

闲来无事,做的一个小东西。效果图:

 既然能检测裂缝,那是不是……本来想开个车,奈何代码有bug,又不想改,就算了吧

 代码如下:

srcImg=imread('3.jpg');    %图片读取 
subplot(3,4,1);
imshow(srcImg);   
title('原始图像');

srcImg=rgb2gray(srcImg);   %灰度图
subplot(3,4,2);
imshow(srcImg);  


cropImg = imcrop(srcImg);     %裁剪图片
title('灰度图');
subplot(3,4,3);
imshow(cropImg);
title('裁剪图像');

adjImg=imadjust(cropImg,[0.40,0.75],[0,1]);   %区域增强
subplot(3,4,4);
imshow(adjImg);
title('区域增强');


H = fspecial('gaussian',2,2);          %滤波去噪
filImg = imfilter(adjImg,H,'replicate');
subplot(3,4,5);
imshow(filImg);
title('滤波去噪');


bwImgBig=im2bw(filImg,70/255);         %对灰度图像进行两次不同大小阈值的二值化,再把两次产生的二值化图像进行而至重构。
subplot(3,4,6);
imshow(~bwImgBig);
title('大阈值');

bwImgSmall=im2bw(filImg,30/255);
subplot(3,4,7);
imshow(~bwImgSmall);
title('小阈值');



recImg=imreconstruct(~bwImgSmall,~bwImgBig);   %去除图像边框干扰
[m,n]=size(recImg);
recImg(1,1:n)=0;
recImg(m,1:n)=0;
recImg(1:m,1)=0;
recImg(1:m,n)=0;
subplot(3,4,8);
imshow(recImg);
title('去除图像边框干扰');



%去除小于10的区域
recImg=bwareaopen(recImg,10);   %Bwareaopen函数是去除像素点少于十的连通区域
subplot(3,4,9);
imshow(recImg);
title('去除小于10的区域' );

%mark
[r,c]=size(recImg);
mark1=21;
col1=recImg(mark1,:);
col1=find(col1==1);
col1=round(length(col1)/2)+col1(1);

subplot(3,4,10);
imshow(recImg);
hold on; 
plot(col1,mark1, 'o','MarkerSize',20,'MarkerEdgeColor','r'); 

mark2=round(r/2);
col2=recImg(mark2,:);
col2=find(col2==1);
col2=round(length(col2)/2)+col2(1);
plot(col2,mark2, 'o','MarkerSize',20,'MarkerEdgeColor','r'); 


mark3=r-20;
col3=recImg(mark3,:);
col3=find(col3==1);
col3=round(length(col3)/2)+col3(1);
plot(col3,mark3, 'o','MarkerSize',20,'MarkerEdgeColor','r'); 


%计算宽度
[r,c]=size(recImg);
num=length(find(recImg==1));
avgPixel=num/m;
%普通对话框
h=dialog('name','宽度(pixel)','position',[700 500 200 70]);
uicontrol('parent',h,'style','text','string',avgPixel,'position',[10 40 120 20],'fontsize',12);
uicontrol('parent',h,'style','pushbutton','position',[80 10 50 20],'string','确定','callback','delete(gcbf)');

 

2016-10-10 10:01:54 freedom098 阅读数 13396
  • ShaderGraph从入门到实战

    大智和你一起学习ShaderGraph,在实战中探索。 课程内容 ShaderGraph的基本使用 丰富的实战案例: · 全息效果 · 边缘光效果 ·  溶解效果 · 积雪效果 · 扭曲效果 · 干扰效果 · 流光效果 · 石化效果 · 顶点动画:跳动的小球 · 游动的龙鱼 · 小草摇曳效果 · 海面效果 ·  水晶效果 · 裂缝的冰面效果 · 自定义节点的用法及改造裂缝的冰块 · 云海效果 · 雨滴涟漪效果 · 卡通渲染 所需前置知识 安装好Unity即可

    572 人正在学习 去看看 郑洪智

师弟最近要使用四旋翼进行桥梁探伤,主要是用运动相机搭载在四轴上检测裂缝,就顺便搞了一下有关于裂缝检测的图像处理。

算法比较简单,没有考虑太多复杂情况,在简单墙面背景下基本可以找到裂缝并框定。

基本思路为,先转换彩色图为灰度图,然后进行自适应局部阈值化,目的是为了减少光照与阴影对阈值的影响,然后进行膨胀操作,尽量放大凸显裂缝,在用中值滤波平滑一下,去除一些高频噪声。然后调用寻找轮廓函数寻找所有轮廓,寻找连通域最大的那个轮廓,然后在原图画框即可。

先上算法代码,之后还有Qt界面加图像传输完整版。

// cracker_find.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <opencv2\opencv.hpp>
#include <vector>
#include<time.h> 

using namespace cv;
using namespace std;

void location(Mat &srcImg,Mat &binImg)
{

    vector< vector<Point> > contours ;
    if(binImg.data)
    {
        findContours(binImg,contours,CV_RETR_EXTERNAL,CV_CHAIN_APPROX_NONE);
	}

    if(contours.size() > 1)
    {
        double maxArea = 0;
        vector <Point> maxContour;
        for(size_t i = 0; i < contours.size(); i++)
        {
            double area = contourArea(contours[i]);
            if (area > maxArea)
            {
                maxArea = area;
                maxContour = contours[i];
            }
        }
        Rect maxRect;
        Mat ROI;
        if (maxContour.size()!=0)
        {
             maxRect = boundingRect(maxContour);          
        }

        rectangle(srcImg, maxRect, cv::Scalar(0,0,255));
    }
}


void preProcessing(Mat &srcImg,Mat &binImg,int elementSize = 7)
{
	Mat grayImg;
	cvtColor(srcImg,grayImg,CV_RGB2GRAY);
	int blockSize = 25;  
    int constValue = 35;    
    adaptiveThreshold(grayImg, binImg, 255, CV_ADAPTIVE_THRESH_MEAN_C, CV_THRESH_BINARY_INV, blockSize, constValue); 
	//threshold(grayImg,binImg,150,255,THRESH_BINARY_INV);
	Mat element = getStructuringElement(MORPH_RECT, Size(elementSize, elementSize));
	dilate(binImg,binImg,element);
	medianBlur(binImg,binImg,9);
}

int _tmain(int argc, _TCHAR* argv[])
{

	clock_t start,finish;  
    double totaltime;  
	start=clock();

	Mat srcImg = imread("D:\\crack.jpg");
		
	Mat binImg;
	preProcessing(srcImg,binImg);
	imshow("binImg",binImg);
	location(srcImg,binImg);
	imshow("ansImg",srcImg);

	finish=clock();  
    totaltime=(double)(finish-start)/CLOCKS_PER_SEC;  
    cout<<"\n此程序的运行时间为"<<totaltime<<"秒!"<<endl;
	//system("pause");

	waitKey();

	return 0;
}



2011-10-31 11:42:17 kevinzhangyang 阅读数 2179
  • ShaderGraph从入门到实战

    大智和你一起学习ShaderGraph,在实战中探索。 课程内容 ShaderGraph的基本使用 丰富的实战案例: · 全息效果 · 边缘光效果 ·  溶解效果 · 积雪效果 · 扭曲效果 · 干扰效果 · 流光效果 · 石化效果 · 顶点动画:跳动的小球 · 游动的龙鱼 · 小草摇曳效果 · 海面效果 ·  水晶效果 · 裂缝的冰面效果 · 自定义节点的用法及改造裂缝的冰块 · 云海效果 · 雨滴涟漪效果 · 卡通渲染 所需前置知识 安装好Unity即可

    572 人正在学习 去看看 郑洪智

用途

在二值图像或灰度图像中检测并标记连通区域,统计连通区域的信息如面积、周长、重心、区域形状参数(形状因子、矩、直方图、其他)等。

 

步骤

轮廓追踪(追踪原理+链码)-->链码表转换为第一类或第二类线段表-->检测并标记连通区域,统计连通区域的信息。

 

原理

参看资料《C与C++图像处理编程》第八章轮廓跟踪。

入门级图像分割~

博文 来自: Joczu
没有更多推荐了,返回首页