精华内容
下载资源
问答
  • 常用的图像锐化方法不包括
    2021-03-28 15:31:45

    基本概念

    图像锐化是使图像边缘更加清晰的一种图像处理方法。常用的做法是提取图像的高频分量,将其叠加到原图上。
    图像高频分量的提取有两种做法:一种是用高通滤波器得到高频分量;另一种是用低通滤波器得到低频,然后用原图减去低频得到高频。
    直接提取高频的方法有sobel算法、laplcian算子,sobel算子是图像的一阶导数,提取的是梯度信息,分水平和垂直两种,常常用来做边缘检测、方向判别,sobel算子在斜坡处不为0,因此会产生较粗的边缘。laplcian算子是图像的二阶导,在图像开始变化和结束变化的地方值不为0,渐变时结果为0,因此laplacian比sobel算子更适合做sharpen。
    除了直接提取高频的方法外,我们也可以先提取低频,原图减去低频得到高频。这种方法称为非锐化掩模(unsharpen mask),我们常使用低通滤波器(高斯、双边)对图像进行滤波,这种方法滤波器很好控制(包括大小和强弱),从而可以控制高频分量的强弱。

    钝化蒙版

    先根据用户指定的钝化度对图像进行高斯模糊处理,再对高斯模糊处理结果与原图像进行钝化处理。 钝化度用来改变像素间的对比度强弱,钝化度,取值(0~100),钝化值越小,钝化的部分就越窄,仅仅会影响边缘像素; 钝化值越大,钝化的范围越宽,效果更明显。

    // degree:钝化度,取值(0~100)
    // 钝化度用来改变像素间的对比度强弱,钝化值越小,钝化的部分就越窄,仅仅会影响边缘像素
    // 钝化值越大,钝化的范围越宽,效果更明显
    Mat UnsharpMask(Mat src, int degree) {
    	int row = src.rows;
    	int col = src.cols;
    	if (degree < 1) degree = 1;
    	if (degree > 100) degree = 100;
    	Mat dst(row, col, CV_8UC3);
    	src.copyTo(src);
    	int border = 1;
    	for (int i = 0; i < degree; i++) {
    		GaussianBlur(dst, dst, Size(3, 3), 1.0);
    	}
    	for (int i = 0; i < row; i++) {
    		for (int j = 0; j < col; j++) {
    			for (int k = 0; k < 3; k++) {
    				int sum = 2 * src.at<Vec3b>(i, j)[k] - dst.at<Vec3b>(i, j)[k];
    				if (sum > 255) sum = 255;
    				else if (sum < 0) sum = 0;
    				dst.at<Vec3b>(i, j)[k] = sum;
    			}
    		}
    	}
    	return dst;
    }
    

    参考资料

    更多相关内容
  • 图像锐化,4种方法

    2013-04-22 15:51:05
    数字图像处理的,图像锐化包括Laplacian,Priwitt,Sobel,水平方向锐化。比较基础的,C写的
  • 利用Python集成了20多常用图像处理方法包括二值化、边缘检测、开闭运算、高斯模糊、直方图等操作。仅需要读取图片便能运行,可在Python3环境下直接运行,无需调整。
  • 本程序给出了一个图像的平滑与锐化的详细例子,里面包括多种图像平滑和锐化算法
  • Matlab图像滤波算法,包括中值滤波,均值滤波,图像锐化
  • 本文在掌握了图像锐化的原理,发展现状的基础上,展开研究锐化算法,提出了先用算法检出边缘,然后根据检出的边缘对图像进行高频增强的方法。介绍了一些算法,包括、LoG、Canny等算法。对常用的LoG和Canny等算子进行...
  • 本文档包含数字图像空间域的锐化处理,包括robert算子滤波、sobel算子滤波,以及laplace算子滤波。附代码。
  • 数字图像处理——图像锐化

    千次阅读 2022-03-23 11:07:32
    对主要的图像锐化算法进行了介绍。

            图像增强是图像处理的一个重要环节,早期的图像处理就是从图像增强开始的,人们研究对质量低的图像进行处理以获得改善质量后的图像。现今的图像增强还为后续的图像处理,如图像信息提取、图像识别等,提供更高识别度的图像。

            从图像处理技术来看,图像的摄取、编码、传输和处理过程中有许多因素可以使图像变模糊。如摄取过程中的聚焦不良,编码中的量化步骤使得图像的高频分量损失,处理过程中的对图像进行放大时由于缩放算法具有低通滤波性质而导致图像变得柔和等等。图像锐化正是针对这个问题对图像的边缘进行增强和高频分量进行补偿,使得画质清晰锐利,视觉感受良好,为后续的处理提供具有更高辨析度的图像。

    一、图像锐化基本原理

            研究表明,各种图像模糊的物理过程的数学模型一般包含有求和、平均或者积分运算。那么与此相反,图像的锐化过程就是包含有差分和微分的运算。

            图像锐化是图像增强的一个经典问题。长期以来在出版业中使用的图像锐化处理是从原始图像自身减去低通滤波后的图像而得到一幅清晰锐利的图像,这种处理称为图像的反锐化掩蔽,也称钝化模板,可以表示为

    f_{s}(x,y)=f_{o}(x,y)-f_{lp}(x,y)

            反锐化掩蔽的一般形式称为高频提升滤波和高频增强滤波。高频提升滤波通过将

    展开全文
  • 数字图像锐化

    2012-04-09 10:43:17
    数字图像锐化算法研究 图像锐化(2010-08-03 16:10:31)转载▼标签: 杂谈 分类: Matlab MATLAB全称是MatrixLaboratory(矩阵实验室),一开始它是一种专门用于矩阵数值计算的软件,从这一点上也可以看出,它在矩阵...
  • 图像增强—图像锐化

    万次阅读 多人点赞 2019-08-09 13:16:32
    图像锐化与图像平滑是相反的操作,锐化是通过增强高频分量来减少图像中的模糊,增强图像细节边缘和轮廓,增强灰度反差,便于后期对目标的识别和处理。锐化处理在增强图像边缘的同时也增加了图像的噪声。方法通常有...

    1. 图像锐化

    图像锐化与图像平滑是相反的操作,锐化是通过增强高频分量来减少图像中的模糊,增强图像细节边缘和轮廓,增强灰度反差,便于后期对目标的识别和处理。锐化处理在增强图像边缘的同时也增加了图像的噪声。方法通常有微分法高通滤波法

    1.1. 图像细节的灰度变化特性

    取图像中的某一行作为扫描行,其灰度变化曲线为:
    在这里插入图片描述
    对该灰度变化曲线进行微分,得到一阶微分曲线和二阶微分曲线:
    在这里插入图片描述
    由图像的灰度变化曲线及其一阶微分和二阶微分可以总结出三种典型的灰度截面特征

    阶跃型细线型斜坡渐变型
    灰度变化曲线在这里插入图片描述在这里插入图片描述在这里插入图片描述
    一阶微分在这里插入图片描述在这里插入图片描述在这里插入图片描述
    二阶微分在这里插入图片描述在这里插入图片描述在这里插入图片描述

    2. 锐化处理方法

    2.1. 微分法

    2.1.1. 梯度法

    梯度的方向是图像中最大变化率的方向,梯度的幅度比例于相邻像素的灰度级差值

    对图像 F ( x , y ) F(x,y) F(x,y),在点 ( x , y ) (x,y) (x,y)处的梯度定义为矢量: ∇ F ( x , y ) = [ ∂ F ∂ x ∂ F ∂ y ] \nabla F(x,y)=\begin{bmatrix} \frac{\partial F}{\partial x} \\ \\ \frac{\partial F}{\partial y} \\ \end{bmatrix} F(x,y)=xFyF其幅度(模)为: ∣   ∇ F ( x , y )   ∣ = ( ∂ F ∂ x ) 2 + ( ∂ F ∂ y ) 2 |\ \nabla F(x,y)\ |=\sqrt{( \frac{\partial F}{\partial x})^2+( \frac{\partial F}{\partial y})^2}  F(x,y) =(xF)2+(yF)2 在进行图像处理时所称的梯度通常是指梯度的模

    对于离散图像,一般用邻近相差的差分法来代替微分:
    在这里插入图片描述
    ∇ F ( x , y ) = ∣   [ F ( x , y ) − F ( x + 1 , y ) ] 2 + [ F ( x , y ) − F ( x , y + 1 ) ] 2   ∣ ≈ ∣   [ F ( x , y ) − F ( x + 1 , y ) ]   ∣ + ∣   [ F ( x , y ) − F ( x , y + 1 ) ] 2   ∣ \begin{aligned} \nabla F(x,y) & = \sqrt{|\ [F(x,y)-F(x+1, y)]^2 + [F(x,y)-F(x,y+1)]^2\ |} \\ & \approx |\ [F(x,y)-F(x+1, y)]\ | + |\ [F(x,y)-F(x,y+1)]^2\ | \\ \end{aligned} F(x,y)= [F(x,y)F(x+1,y)]2+[F(x,y)F(x,y+1)]2   [F(x,y)F(x+1,y)] + [F(x,y)F(x,y+1)]2 
    有了梯度 ∇ F ( x , y ) \nabla F(x,y) F(x,y)之后就可以根据梯度得到锐化结果(输出),这里介绍五种确定锐化输出 G ( x , y ) G(x,y) G(x,y)的方法

    2.1.1.1. 直接以梯度代替锐化输出

    G ( x , y ) = ∇ F ( x , y ) G(x,y)=\nabla F(x,y) G(x,y)=F(x,y)该方法简单,但是在图像均匀的区域由于梯度很小,会导致锐化输出图像整体偏暗

    2.1.1.2. 输出阈值判断

    G ( x , y ) = { ∇ F ( x , y ) , ∇ F ( x , y ) > T F ( x , y ) , o t h e r w i s e G(x,y) = \begin{cases} \nabla F(x,y), & \nabla F(x,y)>T \\ F(x,y), & otherwise \end{cases} G(x,y)={F(x,y),F(x,y),F(x,y)>Totherwise该方法不会破坏图像背景,同时又可以进行一定程度的图像锐化

    2.1.1.3. 为边缘规定一个特定的灰度级

    G ( x , y ) = { L α , ∇ F ( x , y ) > T F ( x , y ) , o t h e r w i s e G(x,y) = \begin{cases} L_\alpha, & \nabla F(x,y)>T \\ F(x,y), & otherwise \end{cases} G(x,y)={Lα,F(x,y),F(x,y)>Totherwise

    2.1.1.4. 为背景规定特定的灰度级

    G ( x , y ) = { ∇ F ( x , y ) , ∇ F ( x , y ) > T L β , o t h e r w i s e G(x,y) = \begin{cases} \nabla F(x,y), & \nabla F(x,y)>T \\ L_\beta, & otherwise \end{cases} G(x,y)={F(x,y),Lβ,F(x,y)>Totherwise

    2.1.1.5. 二值化图像

    G ( x , y ) = { L α , ∇ F ( x , y ) > T L β , o t h e r w i s e G(x,y) = \begin{cases} L_\alpha, & \nabla F(x,y)>T \\ L_\beta, & otherwise \end{cases} G(x,y)={Lα,Lβ,F(x,y)>Totherwise

    2.2. 罗伯特梯度算子法

    Roberts梯度算子法算法简单,无方向性,采用对角相差的差分法来代替微分:
    在这里插入图片描述
    ∇ F ( x , y ) = ∣   [ F ( x , y ) − F ( x + 1 , y + 1 ) ] 2 + [ F ( x + 1 , y ) − F ( x , y + 1 ) ] 2   ∣ ≈ ∣   [ F ( x , y ) − F ( x + 1 , y + 1 ) ]   ∣ + ∣   [ F ( x + 1 , y ) − F ( x , y + 1 ) ] 2   ∣ \begin{aligned} \nabla F(x,y) & = \sqrt{|\ [F(x,y)-F(x+1, y+1)]^2 + [F(x+1,y)-F(x,y+1)]^2\ |} \\ & \approx |\ [F(x,y)-F(x+1, y+1)]\ | + |\ [F(x+1,y)-F(x,y+1)]^2\ | \\ \end{aligned} F(x,y)= [F(x,y)F(x+1,y+1)]2+[F(x+1,y)F(x,y+1)]2   [F(x,y)F(x+1,y+1)] + [F(x+1,y)F(x,y+1)]2 

    2.3. 拉普拉斯算子法

    Laplacian算法是线性二次微分算子,与梯度算子一样具有旋转不变性,从而满足了不同方向的图像边缘锐化要求,其获得的边界比较细,包括较多的细节信息,但边界不清晰

    Laplacian算子: ∇ 2 F ( x , y ) = ∂ 2 F ( x , y ) ∂ x 2 + ∂ 2 F ( x , y ) ∂ y 2 \nabla^2 F(x,y)=\frac{\partial^2 F(x,y)}{\partial x^2}+\frac{\partial^2 F(x,y)}{\partial y^2} 2F(x,y)=x22F(x,y)+y22F(x,y)其离散形式为: ∇ 2 F ( x , y ) = {   [ F ( x + 1 , y ) − F ( x , y ) ] − [ F ( x , y ) − F ( x − 1 , y ) ]   } + {   [ F ( x , y + 1 ) − F ( x , y ) ] − [ F ( x , y ) − F ( x , y − 1 ) ]   } = F ( x + 1 , y ) + F ( x − 1 , y ) + F ( x , y + 1 ) + F ( x , y − 1 ) − 4 F ( x , y ) \begin{aligned} \nabla^2 F(x,y) & = \{\ [F(x+1,y)-F(x,y)]-[F(x,y)-F(x-1,y)]\ \}+\{\ [F(x,y+1)-F(x,y)]-[F(x,y)-F(x,y-1)]\ \} \\ & = F(x+1,y)+F(x-1,y)+F(x,y+1)+F(x,y-1)-4F(x,y) \\ \end{aligned} 2F(x,y)={ [F(x+1,y)F(x,y)][F(x,y)F(x1,y)] }+{ [F(x,y+1)F(x,y)][F(x,y)F(x,y1)] }=F(x+1,y)+F(x1,y)+F(x,y+1)+F(x,y1)4F(x,y)可以看出,Laplacian算子就是其4倍中心元素值与其领域值和之差的绝对值,也可表达为中心元素与其领域内元素和均值负5倍的绝对值 ∇ 2 F ( x , y ) = ∣ − 5 {   F ( x , y ) − 1 5 [ F ( x − 1 , y ) + F ( x , y − 1 ) + F ( x , y ) + F ( x , y + 1 ) + F ( x + 1 , y + 1 ) ]   } ∣ \nabla^2 F(x,y)=|-5\{\ F(x,y)-\frac{1}{5}[F(x-1, y)+F(x, y-1)+F(x,y)+F(x,y+1)+F(x+1,y+1)]\ \}| 2F(x,y)=5{ F(x,y)51[F(x1,y)+F(x,y1)+F(x,y)+F(x,y+1)+F(x+1,y+1)] }

    使用Laplacian算子进行锐化时,其锐化输出 G ( x , y ) G(x,y) G(x,y)为: G ( x , y ) = F ( x , y ) − ∇ 2 F ( x , y ) G(x,y)=F(x,y)-\nabla^2F(x,y) G(x,y)=F(x,y)2F(x,y)

    常用的三种Laplacian算子:
    [ 0 − 1 0 − 1 4 − 1 0 − 1 0 ]        [ − 1 − 1 − 1 − 1 8 − 1 − 1 − 1 − 1 ]        [ 1 − 2 1 − 2 4 − 2 1 − 2 1 ] \begin{bmatrix} 0 & -1 & 0 \\ -1 & 4 & -1 \\ 0 & -1 & 0 \\ \end{bmatrix}\ \ \ \ \ \ \begin{bmatrix} -1 & -1 & -1 \\ -1 & 8 & -1 \\ -1 & -1 & -1 \\ \end{bmatrix}\ \ \ \ \ \ \begin{bmatrix} 1 & -2 & 1 \\ -2 & 4 & -2 \\ 1 & -2 & 1 \\ \end{bmatrix} 010141010      111181111      121242121

    在图像处理中,为了改善锐化的效果,也可以脱离微分计算原理,在原有算子的基础之上对模板系数进行改变,得到Laplacian变形算子

    2.4. 高通滤波法

    图像的边缘与频域中的高频分量相对应,高通滤波器可以抑制低频分量,从而达到图像锐化的目的

    建立在离散卷积基础上的空域高通滤波关系式为: g ( μ , ν ) = ∑ x ∑ y F ( x , y ) H ( μ − x + 1 , ν − y + 1 ) g(\mu,\nu)=\sum_{x}^{}\sum_{y}^{}F(x,y)H(\mu-x+1,\nu-y+1) g(μ,ν)=xyF(x,y)H(μx+1,νy+1)其中 H ( μ − x + 1 , ν − y + 1 ) H(\mu-x+1,\nu-y+1) H(μx+1,νy+1)被称作冲激响应

    常用的五种归一化冲激响应阵列:
    H 1 = [ 0 − 1 0 − 1 5 − 1 0 − 1 0 ]        H 2 = [ − 1 − 1 − 1 − 1 9 − 1 − 1 − 1 − 1 ]        H 3 = [ 1 − 2 1 − 2 5 − 2 1 − 2 1 ] H_1=\begin{bmatrix} 0 & -1 & 0 \\ -1 & 5 & -1 \\ 0 & -1 & 0 \\ \end{bmatrix}\ \ \ \ \ \ H_2=\begin{bmatrix} -1 & -1 & -1 \\ -1 & 9 & -1 \\ -1 & -1 & -1 \\ \end{bmatrix}\ \ \ \ \ \ H_3=\begin{bmatrix} 1 & -2 & 1 \\ -2 & 5 & -2 \\ 1 & -2 & 1 \\ \end{bmatrix} H1=010151010      H2=111191111      H3=121252121 H 4 = 1 7 [ 0 − 2 0 − 2 19 − 2 0 − 2 0 ]        H 5 = 1 2 [ − 2 − 1 − 2 − 1 6 − 1 − 2 − 1 − 2 ] H_4=\frac{1}{7}\begin{bmatrix} 0 & -2 & 0 \\ -2 & 19 & -2 \\ 0 & -2 & 0 \\ \end{bmatrix}\ \ \ \ \ \ H_5=\frac{1}{2}\begin{bmatrix} -2 & -1 & -2 \\ -1 & 6 & -1 \\ -2 & -1 & -2 \\ \end{bmatrix} H4=710202192020      H5=21212161212

    2.5. 模板匹配法

    将具有8个方向、大小为3×3的模板顺序作用于同一图像窗口,并对结果进行排序,将最大的结果值会加权平均值作为窗口中心元素的锐化进行输出。

    模板匹配法除了能增强图像边缘外还具有平滑噪声的优点,总体上效果优于梯度法

    下面介绍两种模板匹配算子:

    2.5.1. Sobel算子

    在这里插入图片描述
    Sobel算子能够锐化的边缘信息较强,其运算定义为: g ( x , y ) = ∣ V x ∣ + ∣ V y ∣ g(x,y)=|V_x|+|V_y| g(x,y)=Vx+Vy其中:
    V x = [ f ( x − 1 , y − 1 ) + 2 f ( x − 1 , y ) + f ( x − 1 , y + 1 ) ] − [ f ( x + 1 , y − 1 ) + 2 f ( x + 1 , y ) + f ( x + 1 , y + 1 ) ] V_x=[f(x-1,y-1)+2f(x-1,y)+f(x-1,y+1)]-[f(x+1,y-1)+2f(x+1,y)+f(x+1,y+1)] Vx=[f(x1,y1)+2f(x1,y)+f(x1,y+1)][f(x+1,y1)+2f(x+1,y)+f(x+1,y+1)] V x = [ f ( x − 1 , y − 1 ) + 2 f ( x , y − 1 ) + f ( x + 1 , y − 1 ) ] − [ f ( x − 1 , y + 1 ) + 2 f ( x , y + 1 ) + f ( x + 1 , y + 1 ) ] V_x=[f(x-1,y-1)+2f(x,y-1)+f(x+1,y-1)]-[f(x-1,y+1)+2f(x,y+1)+f(x+1,y+1)] Vx=[f(x1,y1)+2f(x,y1)+f(x+1,y1)][f(x1,y+1)+2f(x,y+1)+f(x+1,y+1)]

    2.5.2. Prewitt算子

    Prewitt算子有一定的抗干扰性,图像效果比较干净。其有8个方向,分别对应8个模板:
    ↑ : [ 1 1 1 1 − 2 1 − 1 − 1 − 1 ]        ↗ : [ 1 1 1 − 1 − 2 1 − 1 − 1 1 ]        → : [ − 1 1 1 − 1 − 2 1 − 1 1 1 ]        ↘ : [ − 1 − 1 1 − 1 − 2 1 1 1 1 ] \uparrow:\begin{bmatrix} 1 & 1 & 1 \\ 1 & -2 & 1 \\ -1 & -1 & -1 \\ \end{bmatrix}\ \ \ \ \ \ \nearrow:\begin{bmatrix} 1 & 1 & 1 \\ -1 & -2 & 1 \\ -1 & -1 & 1 \\ \end{bmatrix}\ \ \ \ \ \ \rightarrow:\begin{bmatrix} -1 & 1 & 1 \\ -1 & -2 & 1 \\ -1 & 1 & 1 \\ \end{bmatrix}\ \ \ \ \ \ \searrow:\begin{bmatrix} -1 & -1 & 1 \\ -1 & -2 & 1 \\ 1 & 1 & 1 \\ \end{bmatrix} 111121111      111121111      111121111      111121111 ↓ : [ − 1 − 1 − 1 1 − 2 1 1 1 1 ]        ↙ : [ 1 − 1 − 1 1 − 2 − 1 1 1 1 ]        ← : [ 1 1 − 1 1 − 2 − 1 1 1 − 1 ]        ↖ : [ 1 1 1 1 − 2 − 1 1 − 1 − 1 ] \downarrow:\begin{bmatrix} -1 & -1 & -1 \\ 1 & -2 & 1 \\ 1 & 1 & 1 \\ \end{bmatrix}\ \ \ \ \ \ \swarrow:\begin{bmatrix} 1 & -1 & -1 \\ 1 & -2 & -1 \\ 1 & 1 & 1 \\ \end{bmatrix}\ \ \ \ \ \ \leftarrow:\begin{bmatrix} 1 & 1 & -1 \\ 1 & -2 & -1 \\ 1 & 1 & -1 \\ \end{bmatrix}\ \ \ \ \ \ \nwarrow:\begin{bmatrix} 1 & 1 & 1 \\ 1 & -2 & -1 \\ 1 & -1 & -1 \\ \end{bmatrix} 111121111      111121111      111121111      111121111

    3. 一些边缘检测的经验

    1. 突变型细节,通过一阶微分的极大值点,二阶微分的零点可以检测出来
    2. 细线型细节,通过一阶微分的零点,二阶微分的极小值点可以检测出来
    3. 渐变型细节,一般情况下突变幅度小、定位难,不易检测,但二阶微分的信息比一阶微分多,需进行综合考虑

    边缘信息具有方向性,不同的锐化/边缘检测算子也可能具有方向性,因此同一个算子对不同的图像检测的效果可能不同,应对不同图像使用不同的算子进行检测

    展开全文
  • 开发环境为QT5.8+opencv3.2,主要实现了图像增强,包括高斯平滑,中值滤波,图像锐化
  • 自己做的一个基于GUI界面的图像处理系统设计,实现功能包括图象的读取、存储、显示、傅里叶变换,离散余弦变换加噪、去噪、平滑、锐化、边缘检测功能
  • 一、该图像锐化的思想:本文的图像锐化是将图像中的R,G,B的值分别从原图像中提出,然后将分别将这三个R,G,B的值分别与卷积核进行卷积,最终再将最后的三个卷积的结果合成为一个像素值,从而实现图像的锐化效果。...

    一、该图像锐化的思想:

    本文的图像锐化是将图像中的R,G,B的值分别从原图像中提出,然后将分别将这三个R,G,B的值分别与卷积核进行卷积,最终再将最后的三个卷积的结果合成为一个像素值,从而实现图像的锐化效果。

    二、整体的图像锐化的代码为:

    package com.yf1105;

    import java.awt.Color;

    import java.awt.Graphics;

    import java.awt.image.BufferedImage;

    import java.io.File;

    import java.io.IOException;

    import javax.imageio.ImageIO;

    import javax.swing.ImageIcon;

    import javax.swing.JFrame;

    public class ImageTest extends JFrame{

    public static void main(String[] args) {

    new ImageTest();

    }

    public ImageTest() {

    setSize(1000,700);

    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    setVisible(true);

    }

    @Override

    public void paint(Graphics g) {

    super.paint(g);

    int[][] rgbOfImg = getImagePixel("image/3.jpg");

    test(g, "锐化",rgbOfImg.length, rgbOfImg[0].length, rgbOfImg);

    //g.drawImage(new ImageIcon("img/hk.jpg").getImage(), 0, 0, null);

    }

    public void test(Graphics graphics,String text,int width,int height,int[][] rgbOfImg) {

    int[][] R ,G ,B;

    int size=3;

    //对于不同的功能设置不同大小的矩阵

    //if(text.equals("锐化")){size = 5;}

    //锐化卷积核

    double[][] sharpening = {{-1,-1,-1},{-1,9,-1},{-1,-1,-1}};

    //float[][] sharpening = { { -1, -1, -1, -1, -1 }, { -1, -1, -1, -1, -1 }, { -1, -1, 25, -1, -1 },

    //{ -1, -1, -1, -1, -1 }, { -1, -1, -1, -1, -1 } };

    //下面开始搞卷积算法

    //初始化rgb数组

    R = new int[size][size];

    G = new int[size][size];

    B = new int[size][size];

    //对应3*3的像素格子进行卷积计算

    for(int x = 0;x < width-size+1;x++){

    for(int y = 0;y < height-size+1;y++){

    //设置三个值分别存储r,g,b的特征值,一定要在循环内部进行初始化0,这样才能每次有不同的值

    int resultOfR = 0;

    int resultOfG = 0;

    int resultOfB = 0;

    //将格子的rgb值都取出,便于之后的卷积操作

    for(int j = 0;j

    for(int i = 0;i < size;i++){

    //将该点的RGB信息取出,放到变量中待操作

    int argb = rgbOfImg[x][y];

    //分段获取其R,G,B信息

    //int变量共4位32字节,0位对应透明度(A),1位对应R值,2位对应G值,3位对应B值

    //>>操作:将二进制代码向右移动,左边空位根据符号补充,正号为0,负号为1,右边超过范围的全部舍弃

    //&:二进制位与运算符,只有两个变量对应值均为1时该位才返回1,0xff表示全为1的十六进制数(11111111),因此任何与0xff进行位与的结果均为其本身

    //先移位后取位与可以将不同值对应的位信息取出,位与的意义是只取32字节的后8字节

    R[i][j] = argb>>16 & 0xff;

    G[i][j] = argb>>8 & 0xff;

    B[i][j] = argb & 0xff;

    }

    }

    if(text.equals("锐化")){

    //分别对R,G,B进行卷积操作,对应相乘后加起来

    for(int j = 0;j < size;j++){

    for(int i = 0;i < size;i++){

    resultOfR += (int)(sharpening[i][j]*R[i][j]);

    }

    }

    for(int i = 0;i < size;i++){

    for(int j = 0;j < size;j++){

    resultOfG += (int)(sharpening[i][j]*G[i][j]);

    }

    }

    for(int i = 0;i < size;i++){

    for(int j = 0;j < size;j++){

    resultOfB += (int)(sharpening[i][j]*B[i][j]);

    }

    }

    }

    //如果超过了rgb的界限(0-255),将其按照最大值或最小值处理

    if(resultOfR > 255)resultOfR = 255;

    if(resultOfR < 0)resultOfR = 0;

    if(resultOfG > 255)resultOfG = 255;

    if(resultOfG < 0)resultOfG = 0;

    if(resultOfB > 255)resultOfB = 255;

    if(resultOfB < 0)resultOfB = 0;

    //根据该rgb值创建颜色对象

    Color color = new Color(resultOfR, resultOfG, resultOfB);

    //设置颜色,其中graphics是图像的画布(见BufferedImage类与Graphics类)

    graphics.setColor(color);

    //画像素点(drawline用来画线,这里的起始与终点都是同一点,因此可以用来画像素点)

    //size/2用来将像素点赋到中心元上

    graphics.drawLine(x+size/2, y+size/2, x+size/2, y+size/2);

    }

    }

    }

    // 将图片数据 读到数组中

    public int[][] getImagePixel(String image) {

    BufferedImage bi = null;

    File file = new File(image);

    try {

    bi = ImageIO.read(file);

    } catch (IOException e) {

    // TODO Auto-generated catch block

    e.printStackTrace();

    }

    int w = bi.getWidth();

    int h = bi.getHeight();

    int imgindex[][] = new int[w][h];

    for (int i = 0; i < w; i++) {

    for (int j = 0; j < h; j++) {

    int rgb = bi.getRGB(i, j);

    imgindex[i][j] = rgb;

    System.out.print(" " + rgb);

    }

    System.out.println();

    }

    return imgindex;

    }

    }

    输出结果:

    6532fd84adc63facc3609c99a8649116.png

    虽然这个与原图的差别并不大,可能由于卷积核选择的原因。

    三、关键代码的解读

    d529dfe99a6218ceee8dfa71df61496d.png

    该段代码主要是要去取出RGB图像的R,G,B值,然后分别对其R,G,B值分别进行卷积操作,然后将卷积后的结果再重新整合成一个int的像素值,从而就实现了图像的锐化处理。

    当时看这段代码的时候,发现这部分不是很懂,代码如下:

    R[i][j] = argb>>16 & 0xff;

    G[i][j] = argb>>8 & 0xff;

    B[i][j] = argb & 0xff;

    不过仔细分析了一下位运算和与运算,我发现这段代码就是在分别取出R,G,B的值,因为int类的像素值中是包括了a,r,g,b四个值,int是32位的,则这四个数按顺序存在int中,每个数占8位。所以r对应得二进制需要去移动16位才能与oxff(即1111 1111)进行与运算,b对应得二进制需要去移动8位才能与oxff(即1111 1111)进行与运算,g就直接与oxff(即1111 1111)做与运算即可,虽然这样表达有点难理解,那就看下面的示意图吧:

    9662e5c488b1996ad2a7d98017df9024.png

    总结

    到此这篇关于Java中图像锐化操作的文章就介绍到这了,更多相关Java图像锐化操作内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

    展开全文
  • 5509A开发板自带图像处理例程,包括边缘检测、直方图均衡化、锐化、反转.
  • 利用matlab的GUI功能编写的用于图像处理的代码。包括灰度化/对数指数变换/加噪声/平滑滤波/锐化/几何变换等。
  • 图像锐化演示-图像锐化.rar 自己编写的教学演示程序。 内容图像锐化包括梯度法、sobel算子、laplacian算子、prewitt算子和高通滤波。 由于权限不够,能发图片,演示效果截图在附件中。
  • 图像增强技术主要包括:直方图修改处理,图像平滑处理,图像尖锐化处理,彩色图像处理。从纯技术上讲主要有两类:1)频域处理法 2)空域处理法
  • 到目前为止,它可以做的事情包括锐化图像或改善图像的对比度以及其他常规图像处理。 使用概述 如您所见,它具有三个窗口。 如果单击“加载图片”按钮,则可以在左上方窗口中加载图片。 到目前为止,它支持格式“ ....
  • 近年来,基于卷积神经网络的全色图像锐化方法取得了最先进的性能。但是现有的基于CNn的策略需要监督,低分辨率多光谱图像是简单地对高分辨率图像进行模糊和下采样得到的。另一方面,它们通常忽略全色图像丰富的空间...
  • 图像锐化算子算法,包括梯度锐化法,Roberts算子,Prewitt算子,Sobel算子,Laplacian增强算子的介绍与使用
  • (2) 图像增强:包括直方图拉升(线性和非线性)、直方图均衡、平滑与锐化(采用不同的滤镜) (3) 图像恢复:几何操作(如旋转、缩放、等)、模糊恢复(如运动模糊消除等,加分项) ; (4) 图像合成(加分项) :实现换背景、图像...
  • 图像锐化算法

    千次阅读 2019-07-18 11:41:53
    图像锐化,是使图像边缘更清晰的一种图像处理方法,细节增强(detail enhancement)我理解也包含了图像锐化常用的做法是提取图像的高频分量,将其叠加到原图上。图像高频分量的提取有两种做法,一种是用高通滤波器...
  • C语言数字图像处理---3.3图像锐化

    千次阅读 2020-05-08 21:25:47
    本篇将介绍图像增强范畴中的图像锐化部分,以经典的LAPLACE锐化和Photoshop USM锐化为例,通过C语言编程实现,教会大家这两种锐化算法,增强大家对图像锐化的理解以及对图像增强范畴的认知。
  • 用C#开发的的一种图像处理软件,在VS2005下编译通过,能正常运行,实现的功能有均值滤波,中值滤波,边缘提取,锐化
  • Python中的图像处理(第十一章)Python图像锐化及边缘检测(1)前言一. Python准备二. Python仿真三. 小结 前言 随着人工智能研究的不断兴起,Python的应用也在不断上升,由于Python语言的简洁性、易读性以及可扩展...
  • 利用matlab编写的图像平滑锐化程序,包括:'均值滤波','中值滤波','罗伯特梯度','Prewitt算法','Sobel梯度','Laplace算子','Laplace算子扩展模板','方向算子'
  • 本发明涉及图像锐化方法,具体涉及一种基于局部对比度的图像锐化方法。背景技术::真实的亮度图像需要经过很多步骤才能转化为可以直接显示的数字灰度图像。由于电子器件设计不够精密,材料存在缺陷等问题,造成这些...
  • VC++实现图像的微分微分运算、梯度锐化算子、Roberts边缘检测算子、Sobel边缘检测算子、Prewitt边缘检测算子、Krisch边缘检测、高斯-拉普拉斯算子
  • 图像锐化算法-sharpen

    万次阅读 2018-09-11 23:11:38
    图像锐化,是使图像边缘更清晰的一种图像处理方法,细节增强(detail enhancement)我理解也包含了图像锐化常用的做法是提取图像的高频分量,将其叠加到原图上。图像高频分量的提取有两种做法,一种是用高通滤波器...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 6,895
精华内容 2,758
热门标签
关键字:

常用的图像锐化方法不包括