MATLAB形态学图像处理

November 30
MATLAB形态学图像处理
一.作业内容       使用MATLAB形态学图像处理函数(选择其中3种或以上): bwmorph, bwareaopen, bwhitmiss,strel, imdilate, imerode, imopen, imclose, imtophat. 二.作业分析 clear;clc; % 首先读取图片 图片的命名方式按照功能 i = imread('pic.jpg'); SourceImage = rgb2gray(i); AverageImage = zeros(size(SourceIm

图像识别去除孤立点方法

November 30
图像识别去除孤立点方法
在图像识别时,如果一些孤立的噪声点在识别字符附近,将会影响识别的正确性,现在介绍怎样去除这样的孤立点. 1.       原图像,圈内为噪声点.   2.       边缘检测     3.       提取识别点矩形   4.       对矩形面积小于一定阈值的认为是噪声点,并对其区域内的像素值改为背景色.   5.       处理后图像   6.       代码   void CImageOCRDlg::SmoothImage(char* strFileName) {      //去

计算机视觉小实例 No.2 基于形态学的权重自适应图像去噪

November 30
计算机视觉小实例 No.2 基于形态学的权重自适应图像去噪
图像去噪 减少数字图像中噪声的过程,广泛应用于图像处理领域的预处理过程,去噪效果的好坏会直接影响后续的图像处理效果,如图像分割.图像模式识别等. 噪声的产生 噪声只要产生于获取.传输图像的过程中. 常见的噪声有高斯噪声和椒盐噪声,其中高斯噪声主要由摄像机传感器元器件内部产生的,椒盐噪声主要是由图像切割所产生的黑白相间的亮暗点噪声,椒指黑色噪声,盐指白色噪声,还有另外泊松噪声,想继续了解的可以看这里浅析三种的噪声区别. f = imread('onion.png'); g = imnoise(f,

图像形态学 - 自适应阈值(cvAdaptiveThreshold)

November 30
图像形态学 - 自适应阈值(cvAdaptiveThreshold)
自适应阈值:是一种改进了的阈值技术,其中阈值本身是一个变量,自适应阈值T(x,y)的每个像素点都不同,通过计算像素点周围的b*b区域的加权平均,然后减去一个常数来得到自适应阈值.cvAdaptiveThreshold方法:Provides adaptive thresholding binary image.void cvAdaptiveThreshold( IplImage* src, IplImage* dst, double max,CvAdaptiveThreshMethod metho

MATLAB进行 形态学处理的几个函数

November 30
MATLAB进行 形态学处理的几个函数
MATLAB进行 形态学处理的几个函数腐蚀 和 膨胀开操作 和 闭操作形态学重构----填补空洞 & 消除边界对象 腐蚀 和 膨胀 clear all; clc; im = imread('G:\Matlab\toolbox\images\imdata\cameraman.tif'); im_inv=255-im; se = strel('line',11,90); % 结构元素 im1=imerode(im,se); im2=imdilate(im,se); dilatedI=imdilate

MATLAB学习笔记8-图像的形态学处理

November 30
MATLAB学习笔记8-图像的形态学处理
2018.5.10************转载 https://blog.csdn.net/yangleo1987/article/details/53168423 *************感谢作者 ,作者写得特别好一.最基本两个形态学运算----膨胀与腐蚀膨胀与腐蚀能够实现以下作用:   1.消除噪声   2.分割出独立的图像元素,在图像中连接相邻的元素   3.寻找图像中的明显的极大值区域或者极小值区域   4.求出图像的梯度   需要注意之处: 腐蚀和膨胀都是对图像的白色部分(高亮部分)

记opencv-python-tutroals中关于Pyramids中Blending的错误

November 30
记opencv-python-tutroals中关于Pyramids中Blending的错误
在官方文档的第84页中,对apple和orange图片的合成中,实例代码有几个地方需要注意,首先是pyrUp和pyrDown对图像先放大后缩小或者是先缩小后放大后,可能rows和cols和原图像不同,需要resize才能恢复,其次有个小错,就是np.hstack中对cols的参数写错了.贴上正确的代码. (其实和文档里面的示例图片还是不同,有待进一步学习) import cv2 import numpy as np from matplotlib import pyplot as plt A =

课程设计SNL语言词法/语法分析中遇到的坑

November 30
课程设计SNL语言词法/语法分析中遇到的坑
在文件指针指向EOF时,seekg()函数已经不好用了,可以in.clear()清除流,或者找别的方法解决. 不要相信书上的predict集合,很多坑等着你跳. 使用Boost库,好多好用的轮子. 最好不要using namespace xxx; 文件用完一定要in.close(),不然就算直接打开别的文件,in这个文件指针也会有问题. 最后奉上SNL部分编译程序(MAC + XCODE + C++ + BOOST) // // main.cpp // SNL // // Created by

STL中插入排序的实现

November 30
STL中插入排序的实现
虽然大二时已经学习了几种排序算法,但是所选教材对算法的讲解不时很详细,相关的优化也没有说明,都是比较基础的实现,所以找了本书重新看了下. 插入排序在STL中是接收Iterator来排序的,不是操作一个向量或者数组的(虽然这样更简单). 插入排序是N-1趟扫描来完成具体的排序,在第p次扫描后,0-p的位置都已经排序好了. 插入排序在每次扫描时,检查这时的p位置元素,从后往前查询,如果后面的元素小于或大于(根据具体的Comparator)前面的元素,先保存p位置的元素,将所有前面符合要求的元素向后调

C++ 语言宏定义函数的使用(定义单行和多行)

November 30
C++ 语言宏定义函数的使用(定义单行和多行)
昨天笔试问的,不会-.. 在软件开发过程中,经常有一些常用或者通用的功能或者代码段,这些功能既可以写成函数,也可以封装成为宏定义.那么究竟是用函数好,还是宏定义好?这就要求我们对二者进行合理的取舍. 宏定义中允许包含两行以上命令的情形,此时必须在最右边加上"\"且该行"\"后不能再有任何字符,连注释部分都不能有,下面的每行最后的一定要是"\","\"后面加一个空格都会报错,更不能跟注释. 我们来看一个例子,比较两个数或者表达式

basic_string::_S_construct NULL not valid

November 30
basic_string::_S_construct NULL not valid
错误信息为: 一个实例化的逻辑错误导致程序中止. 在what()函数中不能使用NULL来构造basic_string的对象. 下面是 错误 用法的演示: ============================ #include <string> using namespace std; void main(void) { //string a(NULL);//错误用法 //string b = NULL;//错误用法 string a("");//正确用法 string

Matlab项目迁移到C++记忆录

November 30
Matlab项目迁移到C++记忆录
主要是记录一些坑. 老板告诉把师哥一个Matlab的项目迁移到C++上,我就用了C++ + openCV + mlpack + Mac + Xcode. 注意brew安装的mlpack,顺便安装的Armadillo版本过高,需要到7版本的,解决办法就是把提示里面的文件名里面的8改成7就行,很神奇啊- 另外贴上Armadillo的mat与openCV的Mat转换函数 //Armadillo与opencv库之间调用 static void Cv_mat_to_arma_mat(const cv::M

c++ 调用Python接口小问题

November 30
c++ 调用Python接口小问题
Q1:无法调用三方库? A1: //换成你自己的PYTHONPATH,Mac并且用brew安装的不用换了 PyRun_SimpleString("sys.path.append('/usr/local/lib/python2.7/site-packages')"); Q2:Python脚本文件放在哪? A2:随意你喜欢的地方,pName = PyString_FromString("");是用import来获取文件的,所以你只要在前面调用下列语句就好. PyRun_

Caffe for Mac 安装过程

November 30
Caffe for Mac  安装过程
系统版本为:10.12.6 (16G29) 首先假设你已经有了brew这个安装程序(这个没有的几率不大吧?),还有Cmake(这个不能没有把?).咱们不用conda,太麻烦了,直接安装. 首先我们要安装一些依赖包: 千万注意!!!如果已经安装过了的不要重复安装!!!否则之前的程序跑不了别来骂我啊!!! for x in snappy leveldb gflags glog szip hdf5 lmdb homebrew/science/opencv; do brew uninstall $x;

Ubuntu 18.04如何使用独显科学计算而核显进行输出

November 30
Ubuntu 18.04如何使用独显科学计算而核显进行输出
今天搞了一天这个,装了好几次系统才搞好,记下来以备不时之需,如果还能帮助到屏幕前的你的话,那就更好了. 操作系统:Ubuntu 18.04 显卡:evga 1080ti 安装好系统后,请按照如下指令进行. Nvidia官网 2. 安装可能使用的软件 sudo apt-get update sudo apt-get install dkms build-essential linux-headers-generic sudo apt-get install gcc-multilib xorg-de

利用opencv进行原图腐蚀

November 30
利用opencv进行原图腐蚀
代码如下: #include <iostream> #include <opencv2/highgui/highgui.hpp> #include <opencv2/imgproc/imgproc.hpp> #include <opencv2/objdetect/objdetect.hpp> #include <opencv2/ml/ml.hpp> #include <opencv2/nonfree/nonfree.hpp> #inc

RGB转灰度图的几种算法

November 30
RGB转灰度图的几种算法
  方法一:     对于彩色转灰度,有一个很著名的心理学公式:                           Gray = R*0.299 + G*0.587 + B*0.114      方法二:      而实际应用时,希望避免低速的浮点运算,所以需要整数算法.      注意到系数都是3位精度的没有,我们可以将它们缩放1000倍来实现整数运算算法:                           Gray = (R*299 + G*587 + B*114 + 500) / 10

光流Optical Flow介绍与OpenCV实现

November 30
光流Optical Flow介绍与OpenCV实现
光流(optic flow)是什么呢?名字很专业,感觉很陌生,但本质上,我们是最熟悉不过的了.因为这种视觉现象我们每天都在经历.从本质上说,光流就是你在这个运动着的世界里感觉到的明显的视觉运动(呵呵,相对论,没有绝对的静止,也没有绝对的运动).例如,当你坐在火车上,然后往窗外看.你可以看到树.地面.建筑等等,他们都在往后退.这个运动就是光流.而且,我们都会发现,他们的运动速度居然不一样?这就给我们提供了一个挺有意思的信息:通过不同目标的运动速度判断它们与我们的距离.一些比较远的目标,例如云.山,

从CVPR,到ICCV,再到ECCV

November 30
从CVPR,到ICCV,再到ECCV
记得大四我刚进实验室做毕设的时候,看到一篇相关的论文,这篇论文发表在CVPR上,当时我在想CVPR是个什么东西,后来师兄告诉我这是我们计算机视觉领域一个顶级国际会议的名字,它和ICCV,ECCV并称为视觉三大.从此我潜意识里一直觉得这些都是遥不可及的. 转眼两年过去了,来到研二上学期.在过去的1年多时间里,我看了很多文章,也对其中一些有比较深的理解,对搞研究做学术更有了进一步的认识并且也将之前的工作进行了完善.我很匆忙的写了自己的第一篇文章,并把这篇文章投稿到CVPR2009,记得那是08年底投

三种方法进行分水岭分割

November 30
三种方法进行分水岭分割
clear,clc%三种方法进行分水岭分割 %读入图像 filename='sar1.bmp'; f=imread(filename); Info=imfinfo(filename); if Info.BitDepth>8 f=rgb2gray(f); end figure, mesh(double(f));%显示图像,类似集水盆地 %方法1:一般分水岭分割,从结果可以看出存在过分割问题 b=im2bw(f,graythresh(f));%二值化,注意应保证集水盆地的值较低(为0),否则就要对b