2019-12-06 17:04:03 weixin_43991027 阅读数 24
  • OpenCV3.2 Java图像处理视频学习教程

    OpenCV3.2 Java图像处理视频培训课程:基于OpenCV新版本3.2.0详细讲述Java OpenCV图像处理部分内容,包括Mat对象使用、图像读写、 基于常用核心API讲述基本原理、使用方法、参数、代码演示、图像处理思路与流程讲授。主要内容包括opencv像素操作、滤波、边缘提取、直线与圆检测、形态学操作与分水岭、图像金子塔融合重建、多尺度模板匹配、opencv人脸检测、OpenCV跟Tomcat使用实现服务器端图像处理服务。

    4258 人正在学习 去看看 贾志刚

图像处理基本操作

1. 通道变换
2. 灰度化
3. 二值化
4. 大津二值化(otsu)

2018-04-21 15:45:00 learning_tortosie 阅读数 10323
  • OpenCV3.2 Java图像处理视频学习教程

    OpenCV3.2 Java图像处理视频培训课程:基于OpenCV新版本3.2.0详细讲述Java OpenCV图像处理部分内容,包括Mat对象使用、图像读写、 基于常用核心API讲述基本原理、使用方法、参数、代码演示、图像处理思路与流程讲授。主要内容包括opencv像素操作、滤波、边缘提取、直线与圆检测、形态学操作与分水岭、图像金子塔融合重建、多尺度模板匹配、opencv人脸检测、OpenCV跟Tomcat使用实现服务器端图像处理服务。

    4258 人正在学习 去看看 贾志刚

实验目的

1.理解并掌握形态学图像处理中的开操作和闭操作
2.熟悉并掌握MATLAB软件的使用

实验环境

操作系统:Windows 10
软件:MATLAB R2014a

相关知识

1.定义

开操作:使图像的轮廓变得光滑,断开较窄的狭颈和消除细的突出物。
使结构元B对集合A进行开操作,定义为:

AB=(AB)B

含义:先用B对A进行腐蚀,然后用B对结果进行膨胀。
闭操作:同样使图像的轮廓变得光滑,但与开操作相反,它能弥合狭窄的间断和细长的沟壑,消除小的孔洞,并填补轮廓线中的裂痕。
使用结构元B对集合A进行闭操作,定义为:

AB=(AB)B

含义:先用B对A进行膨胀,然后用B对结果进行腐蚀。

2.几何解释

(1)开操作的何解释
A○B的边界由B中的点建立
当B在A的边界内侧滚动时,B所能到达的A的边界的最远点。


(2)闭操作的几何解释
A•B的边界由B中的点建立
B在A的边界外侧滚动
满足〖(B)〗_z⋂A≠”Ø” 的所有点的集合

3.相关函数说明

(1)strel
功能:形态学结构元素。
用法:
SE = STREL('arbitrary',NHOOD,HEIGHT) 创建一个指定领域的非平面结构化元素。HEIGHT是一个矩阵,大小和NHOOD相同,他指定了NHOOD中任何非零元素的高度值。
SE = STREL('ball',R,H,N) 创建一个空间椭球状的结构元素,其X-Y平面半径为R,高度为H。R必须为非负整数,H是一个实数。N必须为一个非负偶数。当N>0时此球形结构元素由一系列空间线段结构元素来近似。
SE = STREL('diamond',R) 创建一个指定大小R平面钻石形状的结构化元素。R是从结构化元素原点到其点的距离,必须为非负整数。
SE = STREL('disk',R,N) 创建一个指定半径R的平面圆盘形的结构元素。这里R必须是非负整数. N须是0, 4, 6, 8.当N大于0时,圆盘形结构元素由一组N(或N+2)个周期线结构元素来近似。当N等于0时,不使用近似,即结构元素的所有像素是由到中心像素距离小于等于R的像素组成。N可以被忽略,此时缺省值是4。注: 形态学操作在N>0情况下要快于N=0的情形。
如:se1 = strel('square',11) % 11乘以11的正方形
(2)imeroad
腐蚀图像
用法:IM2 = imerode(IM,SE)
腐蚀灰度、二进制或压缩二进制图像 IM ,返回腐蚀图像 IM2 。参数 SE 是函数 strel 返回的一个结构元素体或是结构元素体阵列。
(3)imdilate
膨胀图像
用法:IM2 = imdilate(IM, SE)
膨胀灰度图像、二值图像、或者打包的二值图像IM,返回膨胀图像M2。变量SE是一个结构元素或者一个结构元素的数组,其是通过strel函数返回的。

实验内容

先开操作再闭操作,组成形态学滤波器。
a 图是受噪声污染的指纹的二值图像,噪声为黑色背景上的亮元素和亮指纹部分的暗元素
b图是使用的结构元
c图是使用结构元素对图a腐蚀的结果:背景噪声消除了,指纹中的噪声尺寸增加
d图是使用结构元素对图c膨胀的结果:包含于指纹中的噪声分量的尺寸被减小或被完全消除,带来的问题是:在指纹纹路间产生了新的间断
e图是对图d膨胀的结果,图d的大部分间断被恢复,但指纹的线路变粗了
f图是对图e腐蚀的结果,即对图d中开操作的闭操作。最后结果消除了噪声斑点
缺点:指纹线路还是有断点,可以通过加入限制性条件解决。

实验结果

总结

通过本次实验,我基本掌握了开操作和闭操作的理论知识和matlab实现方法,同时体会到了数字图像处理的强大功能,在我们生活的方方面面都有着广泛的应用。学习理论知识第一步,还需要用编程软件去实现,再进一步是应用到现实生活中,再进阶一步就是提出新的理论。
总之,这次实践让我收获颇多,最后衷心感谢老师的细致讲解,她严谨的学风和认真的态度给我打开了数字图像处理领域的大门。

附录

matlab程序

A=imread('Fig0911(a)(noisy_fingerprint).tif'); %注意图片的路径要设置正确
subplot(2,3,1);
imshow(A)
title('噪声图像')
se=strel('square',3);
A2=imerode(A,se);
subplot(2,3,2);
imshow(A2)
title('腐蚀后的图像')
A3=imopen(A,se);
subplot(2,3,3);
imshow(A3)
title('A的开操作')
A4=imdilate(A3,se);
subplot(2,3,4);
imshow(A4)
title('开操作的膨胀')
A5=imclose(A3,se);
subplot(2,3,5);
imshow(A5)
title('开操作的闭操作')
2018-07-06 18:31:04 JonyHwang 阅读数 9894
  • OpenCV3.2 Java图像处理视频学习教程

    OpenCV3.2 Java图像处理视频培训课程:基于OpenCV新版本3.2.0详细讲述Java OpenCV图像处理部分内容,包括Mat对象使用、图像读写、 基于常用核心API讲述基本原理、使用方法、参数、代码演示、图像处理思路与流程讲授。主要内容包括opencv像素操作、滤波、边缘提取、直线与圆检测、形态学操作与分水岭、图像金子塔融合重建、多尺度模板匹配、opencv人脸检测、OpenCV跟Tomcat使用实现服务器端图像处理服务。

    4258 人正在学习 去看看 贾志刚

作者:离散梦

欢迎大家给出宝贵的建议!

 

图像处理基本操作和添加噪音(Matlab)

 

图像处理基本操作:

读取图像:

>>imread(' filename ')    

显示图像:

>>imshow( f )

示例:

同时显示另一幅图:

>>figure,imshow( g )

保存图像:

>>imwrite( f, 'filename')

 

添加噪音:

采用函数imnoise来使用噪声污染一幅图像。该函数的基本语法为

g=imnoise( f , type , parameters )

其中,f是输入图像,type是噪声的类型,parameters是参数设置大小

 

g=imnoise( f , 'gaussian' , m , var )将均值为m、方差为var的高斯噪声加到图像f上。默认值为均值是0、方差是0.01的噪声。

示例:

g=imnoise( f , 'localvar' , V )将均值为0、局部方差为V的高斯噪声加到图像f上。其中V是与f大小相同的一个数组,它包含了每个点的理想方差值。【这个函数和下面这个函数我暂时没实现,需要找下问题,请大牛指点】

g=imnoise( f , 'localvar' , image_intensity , var )将均值为0的高斯噪声添加到图像f上,其中噪声的局部方差var是图像f的亮度值的函数。参量image_intensity和var是大小相同的向量,plot(image_intensity , var)绘制出噪声方差和图像亮度的函数关系。向量image_intensity必须包含范围在【0,1】内的归一化亮度值。

示例:

g=imnoise( f , 'salt & pepper' , d )用椒盐噪声污染图像f,其中d是噪声密度(即包含噪声值的图像区域的百分比)。因此,大约有d*numel(f)个像素收到了影响。默认噪声密度为0.05。

示例:

用方程g=f+n*f将乘性噪声添加到图像f上,其中n是均值为0、方差为var的均匀分布的随机噪声。var的默认值为0.04。

示例:

g=imnoise( f , 'poisson' )从数据中生成泊松噪声。

示例:

2019-11-08 22:06:27 Python_Matlab 阅读数 30
  • OpenCV3.2 Java图像处理视频学习教程

    OpenCV3.2 Java图像处理视频培训课程:基于OpenCV新版本3.2.0详细讲述Java OpenCV图像处理部分内容,包括Mat对象使用、图像读写、 基于常用核心API讲述基本原理、使用方法、参数、代码演示、图像处理思路与流程讲授。主要内容包括opencv像素操作、滤波、边缘提取、直线与圆检测、形态学操作与分水岭、图像金子塔融合重建、多尺度模板匹配、opencv人脸检测、OpenCV跟Tomcat使用实现服务器端图像处理服务。

    4258 人正在学习 去看看 贾志刚

开操作(open)

1、图像形态学的主要操作之一,基于膨胀与腐蚀操作组合而成;
2、主要是应用在二值图像分析中,灰度图像亦可;
3、开操作=膨胀+腐蚀,输入图像+结构元素;
可消除图像中小的干扰区域

闭操作(close)

1、图像形态学的主要操作之一,基于膨胀与腐蚀操作组合而成;
2、主要是应用在二值图像分析中,灰度图像亦可;
3、闭操作=膨胀+腐蚀,输入图像+结构元素;
可填充小的封闭区域

开闭操作的作用

去除小的干扰;
填充闭合区域;
水平或垂直线提取;

from matplotlib import pyplot as plt 
from cv2 import cv2 as cv
import numpy as np 

#开操作 可消除图像中小的干扰区域
def open_demo(image):
    print(image.shape)
    gray = cv.cvtColor(image,cv.COLOR_BGR2GRAY)
    ret,binary = cv.threshold(gray,0,255,cv.THRESH_BINARY|cv.THRESH_OTSU)
    cv.imshow("binary",binary)
    kernel = cv.getStructuringElement(cv.MORPH_RECT,(5,5))
    #改成(15,1)就变成提取长条形,开操作  水平
    #改成(1,15)就变成提取竖直的,开操作  垂直
    #去噪,看噪声线条的大小(3,3)
    result = cv.morphologyEx(binary,cv.MORPH_OPEN,kernel)
    cv.imshow("open_result",result)

#闭操作    可填充小的封闭区域
def close_demo(image):
    print(image.shape)
    gray = cv.cvtColor(image,cv.COLOR_BGR2GRAY)
    ret,binary = cv.threshold(gray,0,255,cv.THRESH_BINARY|cv.THRESH_OTSU)
    cv.imshow("binary",binary)
    kernel = cv.getStructuringElement(cv.MORPH_RECT,(5,5))
    result = cv.morphologyEx(binary,cv.MORPH_CLOSE,kernel)
    cv.imshow("close_result",result)



if __name__ == "__main__":
    filepath = "C:\\pictures\\others\\cat.jpg"
    img = cv.imread(filepath)       # blue green red
    cv.namedWindow("input image",cv.WINDOW_AUTOSIZE)
    cv.imshow("input image",img)

    open_demo(img)
    close_demo(img)
    cv.waitKey(0)
    cv.destroyAllWindows()

图像结果如下:
在这里插入图片描述

2019-05-07 11:11:40 qq_34814092 阅读数 251
  • OpenCV3.2 Java图像处理视频学习教程

    OpenCV3.2 Java图像处理视频培训课程:基于OpenCV新版本3.2.0详细讲述Java OpenCV图像处理部分内容,包括Mat对象使用、图像读写、 基于常用核心API讲述基本原理、使用方法、参数、代码演示、图像处理思路与流程讲授。主要内容包括opencv像素操作、滤波、边缘提取、直线与圆检测、形态学操作与分水岭、图像金子塔融合重建、多尺度模板匹配、opencv人脸检测、OpenCV跟Tomcat使用实现服务器端图像处理服务。

    4258 人正在学习 去看看 贾志刚

Java OpenCV-4.0.0 图像处理07.2 图像形态学操作 图像顶帽和黑帽

Java OpenCV-4.0.0 图像处理 图像形态学操作 图像顶帽和黑帽

顶帽:原图像与开操作之间的差值图像。
黑帽:原图像与闭操作之间的差值图像。

package com.xu.opencv.image;

import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.core.Point;
import org.opencv.core.Size;
import org.opencv.highgui.HighGui;
import org.opencv.imgcodecs.Imgcodecs;
import org.opencv.imgproc.Imgproc;

/**  
 * 
 * @Title: Image.java   
 * @Description: OpenCV-4.0.0 图像形态学操作
 * @Package com.xu.image   
 * @author: xuhyacinth     
 * @date: 2019年10月22日 12:16:55
 * @version: V-1.0.0 
 * @Copyright: 2019 xuhyacinth
 *
 */
public class Image {

	static {
		System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
	}

	public static void main(String[] args) {
		topHat();
	}

	/**
	 * OpenCV-4.0.0 图像形态学 顶帽 (原图像与开操作之间的差值图像)
	 * @return: void  
	 * @date: 2019年10月22日 12:16:55
	 */
	public static void topHat() {
		Mat src = Imgcodecs.imread("C:\\Users\\Administrator\\Pictures\\1.jpg");
		Mat image = new Mat(src.size(), src.type());
		//Imgproc.getStructuringElement 获取图片形态结构调整Size(,)的大小来去除污点
		Mat kernel = Imgproc.getStructuringElement(Imgproc.MORPH_RECT, new Size(15, 15), new Point(-1, -1));
		Imgproc.morphologyEx(src, image, Imgproc.MORPH_TOPHAT, kernel);
		//Imgproc.resize(image, image, new Size(image.width()/3,image.height()/3));
		HighGui.imshow("图像形态学 顶帽 (原图像与开操作之间的差值图像)", image);
		HighGui.waitKey(1);
	}

	/**
	 * OpenCV-4.0.0 图像形态学 黑帽 (原图像与闭操作之间的差值图像)
	 * @return: void  
	 * @date: 2019年10月22日 12:16:55
	 */
	public static void blackHat() {
		Mat src = Imgcodecs.imread("C:\\Users\\Administrator\\Pictures\\1.jpg");
		Mat image = new Mat(src.size(), src.type());
		//Imgproc.getStructuringElement 获取图片形态结构元素,调整Size(,)的大小来去除污点
		Mat kernel = Imgproc.getStructuringElement(Imgproc.MORPH_RECT, new Size(15, 15), new Point(-1, -1));
		Imgproc.morphologyEx(src, image, Imgproc.MORPH_BLACKHAT, kernel);
		//Imgproc.resize(image, image, new Size(image.width()/3,image.height()/3));
		HighGui.imshow("图像形态学 黑帽 (原图像与闭操作之间的差值图像)", image);
		HighGui.waitKey(1);
	}

}

图像形态学 顶帽 (原图像与开操作之间的差值图像)
图像形态学 黑帽 (原图像与闭操作之间的差值图像)

没有更多推荐了,返回首页