灰度图像

CSS 使网页变灰

蓝咒 提交于 2020-04-08 10:00:28
给html加上filter样式 grayscale() 将图像转换为灰度图像。值定义转换的比例。值为100%则完全转为灰度图像,值为0%图像无变化。值在0%到100%之间,则是效果的线性乘子。若未设置,值默认是0。 html{ -webkit-filter: grayscale(100%); filter: grayscale(100%); } 原图: 变灰后: 来源: https://www.cnblogs.com/dairyDeng/p/12657754.html

直方图均衡化和灰度拉伸的区别

余生长醉 提交于 2020-03-27 10:57:06
从结果上面来看整体目标是实现了,灰度拉伸只是线性的拉宽对比度,对图像的整体影响不大。 而灰度直方图均衡化却对图像的整体效果有影响,对直方图的改变也比较大; https://www.cnblogs.com/zvmxvm1991/p/7977872.html 直方图均衡化: 直方图均衡化的作用是图像增强。这种方法对于背景和前景都太亮或者太暗的图像非常有用 有两个问题比较难懂,一是为什么要选用累积分布函数,二是为什么使用累积分布函数处理后像素值会均匀分布。 第一个问题。均衡化过程中,必须要保证两个条件:①像素无论怎么映射,一定要保证原来的大小关系不变,较亮的区域,依旧是较亮的,较暗依旧暗,只是对比度增大,绝对不能明暗颠倒;②如果是八位图像,那么像素映射函数的值域应在0和255之间的,不能越界。综合以上两个条件,累积分布函数是个好的选择,因为累积分布函数是单调增函数(控制大小关系),并且值域是0到1(控制越界问题),所以直方图均衡化中使用的是累积分布函数。 第二个问题。累积分布函数具有一些好的性质,那么如何运用累积分布函数使得直方图均衡化?比较概率分布函数和累积分布函数,前者的二维图像是参差不齐的,后者是单调递增的。直方图均衡化过程中,映射方法是 其中,n是图像中像素的总和, 是当前灰度级的像素个数,L是图像中可能的灰度级总数。 来看看通过上述公式怎样实现的拉伸。假设有如下图像:

OpenCV(3.4.1) Error: Assertion failed (size.width>0 && size.height>0) in cv::imshow, file C:\\build\\master_winpack-build-win64-vc15\\opencv\\modules\\highgui\\src\\window.cpp, line 356

本小妞迷上赌 提交于 2020-03-12 11:59:34
在实现霍夫直线变换时碰到了上述断言问题,经过一番论证,给出如下两种解释: 1.图片的路径问题,最好用绝对路径,且路径中不包含中文 2.图片通道数不一致引起的问题,后面霍夫变换处理的图像为彩色图像,因此在灰度变换时应该是将灰度图像转换为彩色图像,既CV_GRAY2BGR。并且此时也不能使用彩色图像转换为灰度图像,因为之前Canny算子已经将图像转换为了灰度图像,如果再次进行灰度图像的转换就会出现另外一个断言错误。 来源: https://www.cnblogs.com/lbyj/p/12468068.html

实战——读取并分析BMP图像的十六进制数据

五迷三道 提交于 2020-03-10 20:25:02
文章目录 【内容概述】 【获取16进制数据】 【文件头】 【位图头】 【调色板】 【24位真彩图的位图数据】 【图像灰度化】 【灰度化后数据格式的变化】 【读32×32灰度图片的位图数据】 【位图数据的存储和像素位置的关系】 【总结】 【内容概述】 图像压缩 在ubuntu系统下读出BMP图像的十六进制数据 分析24位真彩BMP文件的文件头、图像头、调色板、位图数据 截取图像中心32×32区域,并灰度化 分析灰度化后带来的改变 位图数据存储方式与像素位置的关系 接下来我们就开始叭 ~ (* ^ ω ^ *) 【图像压缩】 这是一个 非必要 步骤,如果你的原图很小就不用啦。但是如果原图很大的话,建议压缩一下,不然数据量会hin大的。可以用格式工厂做 (有点大材小用嘞但是我首先就想到这个方法) .具体步骤可参考 这个说明 。我通过压缩把原本4032×3016的图像压缩成128×95的了。看看这个变化叭: 【压缩前】 【压缩后】 【获取16进制数据】 这一步我是在Ubuntu系统下进行的,我把原图命名为【ballon.bmp】 (因为是2019跨年时候在珠海长隆拍的小丑气球) 在图片所在文件夹打开终端,输入 $ xxd -i ballon.bmp ballon.h 并回车,具体操作可以参考 这个说明 。然后可以看到文件夹下新生成了一个.h文件,打开之后就可以看到十六进制的数组啦。

python图像处理之图像灰度化

纵饮孤独 提交于 2020-03-08 11:43:56
灰度化 预备知识 在了解图像处理的基本操作之前,我们需要知道关于图像的一些基本知识。我们这里所说的图像处理实质上是 数字图像处理 ,因为计算机只能对数字信号进行处理,因此存储在计算机中的图像都是实际图像经过离散化处理之后得到的。 图像是以 数组 的形式存储在计算机中间的,对于彩色图像而言,存储形式是三个离散的二维数组,每个数组对应一个颜色通道,具体在python中,图像的数据结构为 numpy数组 。这里需要注意的是,用于表示图像的numpy数组,其数据类型必须是整数类型而不能是浮点数类型,这一点我们在下面还会提到。 灰度化操作 在opencv中间有自带的函数可以直接进行灰度化,在这里我想介绍一下如何不借助opencv的函数自己编写程序来实现灰度化。 我们主要是通过这一公式来实现灰度化 G = 0.114 ∗ B + 0.587 ∗ G + 0.229 ∗ R G=0.114*B+0.587*G+0.229*R G = 0 . 1 1 4 ∗ B + 0 . 5 8 7 ∗ G + 0 . 2 2 9 ∗ R 因此我们的思路也十分明确,将三个颜色通道的值分别读取出来就利用公式就可以实现。当然这里也有几点注意事项: numpy数组的三个颜色通道从小到大一次为G,B,R而不是我们按照常说的RGB。 通过numpy数组可以实现高效的向量化运算,因此要避免使用效率低下的for循环来求值。

Harris角点检测原理详解

 ̄綄美尐妖づ 提交于 2020-03-06 06:00:16
http://blog.csdn.net/lwzkiller/article/details/54633670 关于角点的应用在图像处理上比较广泛,如图像匹配(FPM特征点匹配)、相机标定等。网上也有很多博客对Harris角点检测原理进行描述,但基本上只是描述了算法流程,而其中相关细节并未作出解释,这里我想对有些地方做出补充说明,正所谓知其然知其所以然,如有不对,还望指正。 关于角点的应用在图像处理上比较广泛,如图像匹配(FPM特征点匹配)、相机标定等。网上也有很多博客对Harris角点检测原理进行描述,但基本上只是描述了算法流程,而其中相关细节并未作出解释,这里我想对有些地方做出补充说明,正所谓知其然知其所以然,如有不对,还望指正。 1. 何为角点? 下面有两幅不同视角的图像,通过找出对应的角点进行匹配。 再看下图所示,放大图像的两处角点区域: 我们可以直观的概括下角点所具有的特征: >轮廓之间的交点; >对于同一场景,即使视角发生变化,通常具备稳定性质的特征; >该点附近区域的像素点无论在梯度方向上还是其梯度幅值上有着较大变化; 2. 角点检测算法基本思想是什么? 算法基本思想是使用一个固定窗口在图像上进行任意方向上的滑动,比较滑动前与滑动后两种情况,窗口中的像素灰度变化程度,如果存在任意方向上的滑动,都有着较大灰度变化,那么我们可以认为该窗口中存在角点。 3

opencv-阈值处理

不羁的心 提交于 2020-03-05 10:01:25
从原理:http://www.opencv.org.cn/opencvdoc/2.3.2/html/doc/tutorials/imgproc/threshold/threshold.html 目标: 本节简单介绍: OpenCV中的阈值(threshold)函数: threshold 的运用。 基本理论: 注意: 本节的解释出自Bradski与Kaehler的书籍 Learning OpenCV 。 什么是阈值? 最简单的图像切割的方法。 应用举例:从一副图像中利用阈值切割出我们须要的物体部分(当然这里的物体能够是一部分或者总体)。这种图像切割方法是基于图像中物体与背景之间的灰度差异。并且此切割属于像素级的切割。 为了从一副图像中提取出我们须要的部分,应该用图像中的每个像素点的灰度值与选取的阈值进行比較,并作出对应的推断。 (注意:阈值的选取依赖于详细的问题。即:物体在不同的图像中有可能会有不同的灰度值。 一旦找到了须要切割的物体的像素点,我们能够对这些像素点设定一些特定的值来表示。(比如:能够将该物体的像素点的灰度值设定为:‘0’(黑色),其它的像素点的灰度值为:‘255’(白色);当然像素点的灰度值能够随意,但最好设定的两种颜色对照度较强,方便观察结果)。 阈值化的类型: OpenCV中提供了阈值(threshold)函数: threshold 。 这个函数有5种阈值化类型

数字图像处理(二)直方图处理

烈酒焚心 提交于 2020-03-04 00:13:36
1.直方图处理概念 灰度级范围为[0,L-1]的数字图像的直方图是离散函数h(rk)=nk,其中rk是第k级灰度值,nk是图像中灰度为rk的像素个数。在实践中,经常用乘积MN表示的图像像素的总数除它的每个分量来归一化直方图,通常M和N是图像的行和列的维数。因此,归一化后的直方图由p(rk)=nk/MN给出,其中k=0,1,…,L-1。简单来说,p(rk)是灰度级rk在图像中出现的概率的一个估计。归一化直方图的所有分量之和应等于1。 在直方图中,暗图像集中分布在灰度级的低端;亮图像集中分布在灰度级的高端。低对比度图像具有较窄的直方图,且集中于灰度级的中部;高对比度图像的直方图分量则覆盖了很宽的灰度级范围。 2.直方图性质 (1)直方图反映了图像中的灰度分布规律。它描述每个灰度级具有的像元个数,但不包含这些像元在图像中的位置信息。 (2)任何一幅特定的图像都有唯一的直方图与之对应,但不同的图像可以有相同的直方图。 (3)如果一幅图像有两个不相连的区域组成,并且每个区域的直方图已知,则整幅图像的直方图是该两个区域的直方图之和。 3.直方图的应用 (1)对于每幅图像都可做出其灰度直方图。 (2)根据直方图的形态可以大致推断图像质量的好坏。由于图像包含有大量的像元,其像元灰度值的分布应符合概率统计分布规律。假定像元的灰度值是随机分布的,那么其直方图应该是正态分布。 (3

数字图像处理(一)基本的灰度变换函数

爱⌒轻易说出口 提交于 2020-03-03 07:09:21
图像反转 灰度图像就是图像从黑到白的256种过度,即[0,255],图像反转就是将黑变成白,白变成黑。举例:原来的灰度值为0,进行图像反转变换后灰度值就变为255。即X=255-Y。 Image_original = imread('1.png'); I = 255 - Image_original; subplot(121) imshow(Image_original) subplot(122) imshow(I) 2.对数变换 对数变换将输入中范围较窄的低灰度值映射为输出中较宽范围的灰度值,相反,对高的输入灰度值也是如此。也就是说,该变换扩展图像的低灰度范围,同时压缩图像的高灰度范围。 公式:X = c log(1 + Y),其中c为常数,且假设Y≥ 0. r = imread('1.png'); s=2*log(1+double(r)); subplot(121); imshow(r); subplot(122); imshow(s,[]); 3.幂律变换 X=c*Y^n 对于 γ < 1,扩展低灰度范围,压缩高灰度范围;对于 γ > 1,压缩低灰度范围,扩展高灰度范围。 对于 γ < 1,扩展低灰度范围,压缩高灰度范围;对于 γ > 1,压缩低灰度范围,扩展高灰度范围。 f = imread('1.png'); f_g = mat2gray(f); f_gama = f_g

python遍历灰度图像像素方法总结

喜你入骨 提交于 2020-03-01 12:41:32
import numpy as np import matplotlib . pyplot as plt import cv2 import time img = cv2 . imread ( 'lena.jpg' , 0 ) # 以遍历每个像素取反为例 # 方法1 t1 = time . time ( ) img1 = np . copy ( img ) rows , cols = img1 . shape [ : 2 ] for row in range ( rows ) : for col in range ( cols ) : img [ row , col ] = 255 - img [ row , col ] t2 = time . time ( ) print ( '方法1所需时间:' , t2 - t1 ) # 方法2 t3 = time . time ( ) img2 = np . copy ( img ) rows , cols = img2 . shape [ : 2 ] img2 = img2 . reshape ( rows * cols ) # print(img2) for i in range ( rows * cols ) : img2 [ i ] = 255 - img2 [ i ] img2 = img2 . reshape ( rows ,