for u=-1:1
for v=-1:1
if Yout(x+u,y+v)==0&abs(I(x+u,y+v)-seed_mean)<=th_mean
seed=[seed;[x+u,y+v]];
end
end
end
end
end
s_star=s_end+1;
L=size(seed);
s_end=L;
end
(2)对上述m文件保存为regiongrow.m格式,编写区域生长的主程序并调用上述regiongrow算法:
clear all
I=imread('细菌.jpg');
figure(1);
imshow(I);
title('原始图像');
I=double(I);
[y1,x1]=getpts;
x1=round(x1);
y1=round(y1);
seed=[x1,y1];
Yout=regiongrow(I,seed,th_mean);
figure(2);
imshow(Yout);
title('区域生长分割');
2 分割结果图
执行程序时,首先在figure1窗口选择需要的种子点选择,在此选择中间的大个细菌作为示例,其中选择不同的阈值th_mean会得到不同的分割结果,当th_mean=40时分割结果如图4.2所示。
图4.2 区域生长法分割效果(th_mean=40)
当th_mean=70时,得到的分割结果如图4.3所示。
图4.3 区域生长法分割效果(th_mean=70)
由图4.2和图4.3可以发现,当选择th_mean=70时,分割效果已经很好,当选择更大的th_mean时,会归并更多的像素,即有可能将背景像素归到目标区域中,进而影响分割准确性,所以,要根据图片特点选择合适的th_mean值。
4.2 分裂合并分割算法
4.2.1 分裂合并分割算法简介
分裂合并分割算法的原理是根据图像数据的四叉树的层次结构来将图像划分成几个不相交的区域,然后从这个结构中的任何一个区域开始,依照一定的准则来分裂、合并这些区域。当一个区域中的数据特征不满足这一准则时,则对这一区域继续进行分裂操作,直至相邻的区域之间满足一定的特征时,分裂结束,进行合并。
分裂合并分割算法中经常使用的方法就是四叉树分解法,令R表示整个图像区域,如果
,则将图像分成四个区域,如果有任何一个区域依然有
,怎讲这个继续分割为四个区域,以此类推直到
为单个像素。四叉树分解法可以用下图4.4的示意图表示。
a) 图像分割示意图 b) 四叉树表示
图4.4 四叉树分解示意图
如图4.5所示,假设图中灰色区域为我们所需要的目标区域,白色为背景区域。对整个图像
,令
表示该区域中所有像素均具有相同的灰度值。所以根据以上条件先将图(a)分割成四个区域,此时右上角的区域满足
,所以不再进行分割,而其他区域继续进行分割操作,直至分割的每个子区域均满足条件,则分裂停止,进行合并。
(a) 原图像 (b) 分裂过程1 (c) 分裂过程2 (d) 分裂过程3
图4.5 区域分裂与合并分割法图解
根据四叉树分解示意图,MATLAB中提供了三种函数来实现这一规则。具体操作步骤是,首先将图像分成四个小区域,然后根据一定的准则判断各个区域是否具有特定的相似性,不满足则进行进一步的分裂,直至分裂的每一小块都达到一定的相似准则,再对各个区域进行合并。
qtdecomp函数用于对图像进行四叉树分解;
qtgeblk函数用于经过四叉树分解后的各个区域的图像信息;
qtsetblk函数用于设定分解区域的灰度值。
4.2.2 分裂合并法的MATLAB程序与分割操作
对数字图像进行分裂合并分割的MATLAB程序为:
clear all
I=imread('细菌.jpg');
S=qtdecomp(I,.2);
blocks=repmat(uint8(0),size(S));
for dim=[512 256 128 64 32 16 8 4 2 1];
numblocks=length(find(S==dim));
if(numblocks>0)
values=repmat(uint8(1),[dim dim numblocks]);
values(2:dim,2:dim,:)=0;
blocks=qtsetblk(blocks,S,dim,values);
end
end
figure(1);
subplot(1,2,1);
imshow(I);
title('原始图像');
subplot(1,2,2);
imshow(blocks,[]);
title('分解图像');
对细菌图像进行分割后的结果图为图4.6所示。
图4.6 细菌图像的四叉树分解
5 图像分割算法的评价
5.1 图像分割算法评价概述
尽管已经有了很多种分割算法,而且该技术也在不断地发展中,但是迄今为止仍然还没有一种通用的分割算法,绝大部分分割算法通常有一定的使用围。而对于某个具体实际图像,为了得到满意的分割结果,通常会面临一个如何选择合适的分割算法的问题,特别是对分割算法不是很了解的情况下,这时就需要参考分割算法的一些性能指标来进行选择。这就是分割算法中的评价问题。尽管很多文献与著作在分割算法的评价方面已有了较深入的研究,但是迄今为止还没有一个通用的客观评价标准,在这个方面就需要我们做出进一步的努力。在做图像处理时要求我们根据不同的要求选择合适的分割算法,因此对不同分割算法作一个比较客观的评价是必需的。
5.2 图像分割算法评价方法和要求
图像分割算法的评价可以有一下这些情况:
(1)性能刻划。即同一分割算法在不同的图像情况下,分割的性能比较。
(2)性能比较。比较不同的分割算法在对同一个图像进行分割时,分割性能的比较。
对分割评价算法的一般要求包括:评价算法的通用性、评价算法的复杂性、可靠性,是否需要参考图和是否需要人工参考等。一般通过分析和实验两种方式对分割算法进行客观评价。所以一个客观的评价方法可分为分析与实验方法两类。
1 分析法
分析法对图像的原理和性能进行直接分析。该算法的原则是指所采用的分析方法和理论,经常采用先进的理论方法将得到更精确的结果。虽然分析方法能避免某些因素,但缺乏分割结果的支持,具有较大的局限性,通过分析分割结果的实际评价分割算法具有实际意义。分析方法通常提供辅助信息,它很少单独使用。
2 实验评价方法
实验法是比较不同算法的分割结果,对分割结果图像进行评价的。在实际应用也是经常使用中这种评价方法。实验方法是对测试图像分割结果进行评估,实验方法所提出的评价方法,一般可分为优化方法和偏差的方法。优化方法是基于一般人的一些视觉图像特征为依据来评估分割效果;偏差的方法通常需要提供一个理想的分割图像作为比较标准,根据计算实和理想分割图像分割效果的差异,但可供比较的形象往往难以统一样本。
5.3 本文算法分析与评价
本文中介绍了两种不同的分割算法,分别为阈值化分割和区域化分割,其中阈值分割算法又有三种不同的求阈值方法分别为双峰法、迭代法和最大类间法;区域化分割又包括区域生长法和分裂合并法。
其中各自的适用围如下:
(1)双峰阈值算法适合直方图呈现明显双峰特性的图像,在进行图像分割之前先进行一步对图像的求直方图操作,根据直方图所体现的特性找出谷点即为所需要的阈值,在直接给阈值th赋值为该谷点的值利用函数im2bw进行分割。
但是,很多时候图像的直方图并不能体现出明显的双峰特性,这时候找到的谷点值就不能很好地把目标图像分割出来,会把大量的目标像素归为背景或者把大量的背景元素归为目标,这样则会是分割的准确性下降,进而影响对图像下一步的处理操作。
例如对lena图像进行双峰法的阈值分割过程与结果如下:
先对其进行求直方图操作,结果如下图5.1所示。
图5.1 lena图像的直方图
lena的直方图特点如上,如果利用双峰法进行分割则需要确定阈值,若选择阈值th=60,进行分割结果如图5.2所示。
图5.2 阈值th=60分割结果 图5.3 阈值th=90分割结果
若选择阈值th=90,进行分割的结果如上图5.3所示。
由图5.2与图5.3可以看出,图5-3显示的当th=90时的分割效果就比th=60时的分割效果要好,但是两个不同阈值的效果都没有达到理想的分割结果,即未能把目标图像很好地分割出来。
可以得出结论:如果图像的直方图没有呈现明显的双峰特性,那么利用双峰法进行的分割结果就不准确,即双峰法适合对一些背景简单、直方图具有双峰特性的图像来进行分割。
有些时候,图像直方图呈现一定的双峰特性,但是并不能直观、准确的观察出图像的阈值特点,这就需要利用一定的算法实现自动选取阈值,迭代法就是在这个方面对双峰法的改进,该方法可以完成阈值的自动选取。
例如对之前lena图像进行分割,如果使用迭代法分割结果如下5.4所示。
图5.4 迭代法对lena图像进行分割
再对cameraman图像的分割示例:
首先,求出该图像的直方图,结果为图5.5所示。
图5.5 cameraman的直方图特性
如利用双峰法选择阈值th=60,进行的分割结果如图5.6所示
图5.6 对cameraman选择阈值为60进行分割结果
而利用迭代法进行的分割结果如图5.7所示。
图5.7 迭代法分割结果
比较图5.6与图5.7能发现迭代法分割的效果就比双峰法分割效果要更准确,例如,迭代法就把图片的下半部分很好的分割了出来。
可以得出结论:对于那些具有一定的双峰特性但又不是能明确观察出阈值的图像就要求我们利用迭代法来进行分割,即迭代法是对双峰法的改进。
MATLAB中提供了一种最大类间方差阈值分割的阈值函数graythresh,用法为:th=graythresh(I),I可以使uint8、uint16或者是double型的图像。该分割算法能根据不同的图像调用graythresh函数来获得最佳阈值,选择lena图像进行示,结果如图5.8所示。
图5.8 最大类间方差法图像分割
对于一些不存在双峰特性的图像也能进行比较理想的分割效果,例如下图5.9所示图像。
图5.9 原图像与直方图
观察上图的直方图并不体现双峰特性,利用该方法进行分割结果如下图5.10所示。
图5.10 原始图像与分割结果
以上三种都能针对特定的图像进行目标分割,但是很多时候我们只需要对目标图像的一部分进行研究,那么就只要求我们将所需的部分分割出来,根据这一要求生成了区域生长算法,利用这种算法能根据需要自主地选择种子像素点,从而分割出需要的部分。例如下图5.11的示例。
图5.11 区域生长法分割示例
如上图的示例所示,该分割方法可以根据图像特点在m文件里设定graythresh函数的不同阈值,选取特定的种子像素点利用区域生长法找到它周围相近或者说像素差值在一定阈值的像素点,归并为一个区域,然后显示出来。
区域生长过程是从一组生长点开始,通过不断地接纳新像素最后得到整个目标区域。而分裂合并法是在开始时将图像分割成一系列任意不相交的区域,直到最后所分得的每个区域的像素都满足一定的灰度值则分裂停止,进行合并。该方法能对所有图片进行分割,但是对那些目标区域灰度值较相近的并且与背景区域灰度值有明显差别的图像能进行较好的分割。例如对cameraman和硬币图像的分割效果,如图5.12和5.13所示。
图5.12 分裂合并法对cameraman分割示例
图5.13 分裂合并法对cameraman分割示例
由图5.12与图5.13可以明显的观察到,当图像的目标区域像素灰度值相近时使用分裂合并分割算法进行分割的效果会比较准确,分割效果更接近所需结果。但对于类似cameraman类型图片时,即目标区域像素的灰度值分布较离散,不具有相似性的图片时,利用该算法就无法将所需目标精确地分割出来,分割的效果就比较粗糙。在精确性要求较高的情况下,该算法就不能完成要求。
6 总结
根据前几章的研究,本文具体概括了一下阈值化分割和区域化分割的基本理论和实验。其中,阈值化分割算法根据求阈值的不同又可以分为人工选择法(主要包括双峰法)和自动选择法(包括迭代法和最大类间方差法),而区域化分割算法又可以分为区域生长法和区域分裂合并法。在前面章节的研究中,不仅对同一分割算法使用不同的图像进行分割,来比较分割的性能,而且还比较不同的分割算法在对同一个图像进行分割时,分割性能的好坏。使用这样的方法能对每一种分割算法进行全面的分割效果分析,能够得出更准确的结论。
至今,各种文献和专著已经提出了多种不同的分割算法,每种算法的实现方式均不相同,但是都基于图像在像素级的不连续性和相似性。每种算法都有其一定的适用围,但是却没有哪种算法能够适合所有的图像特点,只能根据图像的不同特性或者一定的应用要求来找到适合的算法。
参考文献
[1] 德丰.数字图像处理(MATLAB版)[M].北京:人民邮电,2009:258-296.
[2] 刚.MATLAB数字图像处理[M].北京:机械工业,2010:198-222.
[3] 余松煜,周源华,瑞.数字图像处理[M].上海:上海交通大学,2007.
[4] 天华.数字图像处理[M].北京:清华大学.2007.
[5] 秦襄培.MATLAB图像处理与页面编程[M].北京.电子工业,2009:441-469.
[6] 万毅.指纹图像分割技术算法研究[D].:大学,2011.
[7] 徐琳俊.数字图像分割算法研究[D].:科技大学,2011.
[8] 猛.静态图像中的人体分割与姿态估计[D].:理工大学,2011.
[9] 钱智明.图像分割方法研究[D].:国防科技大学,2010.
[10] 冯艳平,王徽.基于阈值分割和边缘检测的枪支THz图像识别[J].红外,2011,32(12):23-26.
[11] 肖辉.彩色图像分割[J].测绘科技情报,2004,53(4):6-11.
[12] 罗志宏,冯国灿.一种新变方法在图像分割中的应用[J].计算机科学,2011,38(12):263-265.
[13] 强.图像分割中的阈值法研究[J].职业技术学院学报(自然科学版),2008.6(6):52-54.
[14] 王丽.相似背景下的苹果图像分割方法仿真研究[J].计算机仿真,2011,28(12):281-284.
[15] 龚声荣.数字图像处理与分析[M].北京:清华大学,2006:168-208.
[16] 敏.数字图像处理[M].北京:机械工业,2006:225-262.
[17] Kong W Z,Zhu Sh A.Multi-face detection based on down sampling and modified subtractive clustering for color images[J].Journal of Zhejiang University Science,2007,8(1):72-78.
[18] Jain A K,Hsu R L,Mohamed A M.Face detection in color images[J].IEEE Trans on Pattern Analysis and Machine Intelligence,2002,24(5):696-706.
你可能感兴趣的:(算法,python,计算机视觉,机器学习,人工智能)
机器学习与深度学习间关系与区别
ℒℴѵℯ心·动ꦿ໊ོ꫞
人工智能 学习 深度学习 python
一、机器学习概述定义机器学习(MachineLearning,ML)是一种通过数据驱动的方法,利用统计学和计算算法来训练模型,使计算机能够从数据中学习并自动进行预测或决策。机器学习通过分析大量数据样本,识别其中的模式和规律,从而对新的数据进行判断。其核心在于通过训练过程,让模型不断优化和提升其预测准确性。主要类型1.监督学习(SupervisedLearning)监督学习是指在训练数据集中包含输入
理解Gunicorn:Python WSGI服务器的基石
范范0825
ipython linux 运维
理解Gunicorn:PythonWSGI服务器的基石介绍Gunicorn,全称GreenUnicorn,是一个为PythonWSGI(WebServerGatewayInterface)应用设计的高效、轻量级HTTP服务器。作为PythonWeb应用部署的常用工具,Gunicorn以其高性能和易用性著称。本文将介绍Gunicorn的基本概念、安装和配置,帮助初学者快速上手。1.什么是Gunico
Python数据分析与可视化实战指南
William数据分析
python python 数据
在数据驱动的时代,Python因其简洁的语法、强大的库生态系统以及活跃的社区,成为了数据分析与可视化的首选语言。本文将通过一个详细的案例,带领大家学习如何使用Python进行数据分析,并通过可视化来直观呈现分析结果。一、环境准备1.1安装必要库在开始数据分析和可视化之前,我们需要安装一些常用的库。主要包括pandas、numpy、matplotlib和seaborn等。这些库分别用于数据处理、数学
python os.environ
江湖偌大
python 深度学习
os.environ['TF_CPP_MIN_LOG_LEVEL']='0'#默认值,输出所有信息os.environ['TF_CPP_MIN_LOG_LEVEL']='1'#屏蔽通知信息(INFO)os.environ['TF_CPP_MIN_LOG_LEVEL']='2'#屏蔽通知信息和警告信息(INFO\WARNING)os.environ['TF_CPP_MIN_LOG_LEVEL']='
Python中os.environ基本介绍及使用方法
鹤冲天Pro
# Python python 服务器 开发语言
文章目录python中os.environos.environ简介os.environ进行环境变量的增删改查python中os.environ的使用详解1.简介2.key字段详解2.1常见key字段3.os.environ.get()用法4.环境变量的增删改查和判断是否存在4.1新增环境变量4.2更新环境变量4.3获取环境变量4.4删除环境变量4.5判断环境变量是否存在python中os.envi
Pyecharts数据可视化大屏:打造沉浸式数据分析体验
我的运维人生
信息可视化 数据分析 数据挖掘 运维开发 技术共享
Pyecharts数据可视化大屏:打造沉浸式数据分析体验在当今这个数据驱动的时代,如何将海量数据以直观、生动的方式展现出来,成为了数据分析师和企业决策者关注的焦点。Pyecharts,作为一款基于Python的开源数据可视化库,凭借其丰富的图表类型、灵活的配置选项以及高度的定制化能力,成为了构建数据可视化大屏的理想选择。本文将深入探讨如何利用Pyecharts打造数据可视化大屏,并通过实际代码案例
Goolge earth studio 进阶4——路径修改与平滑
陟彼高冈yu
Google earth studio 进阶教程 旅游
如果我们希望在大约中途时获得更多的城市鸟瞰视角。可以将相机拖动到这里并创建一个新的关键帧。camera_target_clip_7EarthStudio会自动平滑我们的路径,所以当我们通过这个关键帧时,不是一个生硬的角度,而是一个平滑的曲线。camera_target_clip_8路径上有贝塞尔控制手柄,允许我们调整路径的形状。右键单击,我们可以选择“平滑路径”,这是默认的自动平滑算法,或者我们可
Python教程:一文了解使用Python处理XPath
旦莫
Python进阶 python 开发语言
目录1.环境准备1.1安装lxml1.2验证安装2.XPath基础2.1什么是XPath?2.2XPath语法2.3示例XML文档3.使用lxml解析XML3.1解析XML文档3.2查看解析结果4.XPath查询4.1基本路径查询4.2使用属性查询4.3查询多个节点5.XPath的高级用法5.1使用逻辑运算符5.2使用函数6.实战案例6.1从网页抓取数据6.1.1安装Requests库6.1.2代
python os.environ_python os.environ 读取和设置环境变量
weixin_39605414
python os.environ
>>>importos>>>os.environ.keys()['LC_NUMERIC','GOPATH','GOROOT','GOBIN','LESSOPEN','SSH_CLIENT','LOGNAME','USER','HOME','LC_PAPER','PATH','DISPLAY','LANG','TERM','SHELL','J2REDIR','LC_MONETARY','QT_QPA
基于社交网络算法优化的二维最大熵图像分割
智能算法研学社(Jack旭)
智能优化算法应用 图像分割 算法 php 开发语言
智能优化算法应用:基于社交网络优化的二维最大熵图像阈值分割-附代码文章目录智能优化算法应用:基于社交网络优化的二维最大熵图像阈值分割-附代码1.前言2.二维最大熵阈值分割原理3.基于社交网络优化的多阈值分割4.算法结果:5.参考文献:6.Matlab代码摘要:本文介绍基于最大熵的图像分割,并且应用社交网络算法进行阈值寻优。1.前言阅读此文章前,请阅读《图像分割:直方图区域划分及信息统计介绍》htt
探索OpenAI和LangChain的适配器集成:轻松切换模型提供商
nseejrukjhad
langchain easyui 前端 python
#探索OpenAI和LangChain的适配器集成:轻松切换模型提供商##引言在人工智能和自然语言处理的世界中,OpenAI的模型提供了强大的能力。然而,随着技术的发展,许多人开始探索其他模型以满足特定需求。LangChain作为一个强大的工具,集成了多种模型提供商,通过提供适配器,简化了不同模型之间的转换。本篇文章将介绍如何使用LangChain的适配器与OpenAI集成,以便轻松切换模型提供商
使用Faiss进行高效相似度搜索
llzwxh888
faiss python
在现代AI应用中,快速和高效的相似度搜索是至关重要的。Faiss(FacebookAISimilaritySearch)是一个专门用于快速相似度搜索和聚类的库,特别适用于高维向量。本文将介绍如何使用Faiss来进行相似度搜索,并结合Python代码演示其基本用法。什么是Faiss?Faiss是一个由FacebookAIResearch团队开发的开源库,主要用于高维向量的相似性搜索和聚类。Faiss
python是什么意思中文-在python中%是什么意思
编程大乐趣
Python中%有两种:1、数值运算:%代表取模,返回除法的余数。如:>>>7%212、%操作符(字符串格式化,stringformatting),说明如下:%[(name)][flags][width].[precision]typecode(name)为命名flags可以有+,-,''或0。+表示右对齐。-表示左对齐。''为一个空格,表示在正数的左侧填充一个空格,从而与负数对齐。0表示使用0填
深入理解 MultiQueryRetriever:提升向量数据库检索效果的强大工具
nseejrukjhad
数据库 python
深入理解MultiQueryRetriever:提升向量数据库检索效果的强大工具引言在人工智能和自然语言处理领域,高效准确的信息检索一直是一个关键挑战。传统的基于距离的向量数据库检索方法虽然广泛应用,但仍存在一些局限性。本文将介绍一种创新的解决方案:MultiQueryRetriever,它通过自动生成多个查询视角来增强检索效果,提高结果的相关性和多样性。MultiQueryRetriever的工
Day1笔记-Python简介&标识符和关键字&输入输出
~在杰难逃~
Python python 开发语言 大数据 数据分析 数据挖掘
大家好,从今天开始呢,杰哥开展一个新的专栏,当然,数据分析部分也会不定时更新的,这个新的专栏主要是讲解一些Python的基础语法和知识,帮助0基础的小伙伴入门和学习Python,感兴趣的小伙伴可以开始认真学习啦!一、Python简介【了解】1.计算机工作原理编程语言就是用来定义计算机程序的形式语言。我们通过编程语言来编写程序代码,再通过语言处理程序执行向计算机发送指令,让计算机完成对应的工作,编程
python八股文面试题分享及解析(1)
Shawn________
python
#1.'''a=1b=2不用中间变量交换a和b'''#1.a=1b=2a,b=b,aprint(a)print(b)结果:21#2.ll=[]foriinrange(3):ll.append({'num':i})print(11)结果:#[{'num':0},{'num':1},{'num':2}]#3.kk=[]a={'num':0}foriinrange(3):#0,12#可变类型,不仅仅改变
121. 买卖股票的最佳时机
薄荷糖的味道_fb40
给定一个数组,它的第i个元素是一支给定股票第i天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。注意你不能在买入股票前卖出股票。示例1:输入:[7,1,5,3,6,4]输出:5解释:在第2天(股票价格=1)的时候买入,在第5天(股票价格=6)的时候卖出,最大利润=6-1=5。注意利润不能是7-1=6,因为卖出价格需要大于买入价格。示例2:输入:
人工智能时代,程序员如何保持核心竞争力?
jmoych
人工智能
随着AIGC(如chatgpt、midjourney、claude等)大语言模型接二连三的涌现,AI辅助编程工具日益普及,程序员的工作方式正在发生深刻变革。有人担心AI可能取代部分编程工作,也有人认为AI是提高效率的得力助手。面对这一趋势,程序员应该如何应对?是专注于某个领域深耕细作,还是广泛学习以适应快速变化的技术环境?又或者,我们是否应该将重点转向AI无法轻易替代的软技能?让我们一起探讨程序员
每日算法&面试题,大厂特训二十八天——第二十天(树)
肥学
⚡算法题⚡面试题每日精进 java 算法 数据结构
目录标题导读算法特训二十八天面试题点击直接资料领取导读肥友们为了更好的去帮助新同学适应算法和面试题,最近我们开始进行专项突击一步一步来。上一期我们完成了动态规划二十一天现在我们进行下一项对各类算法进行二十八天的一个小总结。还在等什么快来一起肥学进行二十八天挑战吧!!特别介绍小白练手专栏,适合刚入手的新人欢迎订阅编程小白进阶python有趣练手项目里面包括了像《机器人尬聊》《恶搞程序》这样的有趣文章
Python快速入门 —— 第三节:类与对象
孤华暗香
Python快速入门 python 开发语言
第三节:类与对象目标:了解面向对象编程的基础概念,并学会如何定义类和创建对象。内容:类与对象:定义类:class关键字。类的构造函数:__init__()。类的属性和方法。对象的创建与使用。示例:classStudent:def__init__(self,name,age,major):self.name
pyecharts——绘制柱形图折线图
2224070247
信息可视化 python java 数据可视化
一、pyecharts概述自2013年6月百度EFE(ExcellentFrontEnd)数据可视化团队研发的ECharts1.0发布到GitHub网站以来,ECharts一直备受业界权威的关注并获得广泛好评,成为目前成熟且流行的数据可视化图表工具,被应用到诸多数据可视化的开发领域。Python作为数据分析领域最受欢迎的语言,也加入ECharts的使用行列,并研发出方便Python开发者使用的数据
回溯算法-重新安排行程
chirou_
算法 数据结构 图论 c++ 图搜索
leetcode332.重新安排行程这题我还没自己ac过,只能现在凭着刚学完的热乎劲把我对题解的理解记下来。本题我认为对数据结构的考察比较多,用什么数据结构去存数据,去读取数据,都是很重要的。classSolution{private:unordered_map>targets;boolbacktracking(intticketNum,vector&result){//1.确定参数和返回值//2
Python 实现图片裁剪(附代码) | Python工具
剑客阿良_ALiang
前言本文提供将图片按照自定义尺寸进行裁剪的工具方法,一如既往的实用主义。环境依赖ffmpeg环境安装,可以参考我的另一篇文章:windowsffmpeg安装部署_阿良的博客-CSDN博客本文主要使用到的不是ffmpeg,而是ffprobe也在上面这篇文章中的zip包中。ffmpy安装:pipinstallffmpy-ihttps://pypi.douban.com/simple代码不废话了,上代码
【华为OD技术面试真题 - 技术面】- python八股文真题题库(4)
算法大师
华为od 面试 python
华为OD面试真题精选专栏:华为OD面试真题精选目录:2024华为OD面试手撕代码真题目录以及八股文真题目录文章目录华为OD面试真题精选**1.Python中的`with`**用途和功能自动资源管理示例:文件操作上下文管理协议示例代码工作流程解析优点2.\_\_new\_\_和**\_\_init\_\_**区别__new____init__区别总结3.**切片(Slicing)操作**基本切片语法
python os 环境变量
CV矿工
python 开发语言 numpy
环境变量:环境变量是程序和操作系统之间的通信方式。有些字符不宜明文写进代码里,比如数据库密码,个人账户密码,如果写进自己本机的环境变量里,程序用的时候通过os.environ.get()取出来就行了。os.environ是一个环境变量的字典。环境变量的相关操作importos"""设置/修改环境变量:os.environ[‘环境变量名称’]=‘环境变量值’#其中key和value均为string类
Python爬虫解析工具之xpath使用详解
eqa11
python 爬虫 开发语言
文章目录Python爬虫解析工具之xpath使用详解一、引言二、环境准备1、插件安装2、依赖库安装三、xpath语法详解1、路径表达式2、通配符3、谓语4、常用函数四、xpath在Python代码中的使用1、文档树的创建2、使用xpath表达式3、获取元素内容和属性五、总结Python爬虫解析工具之xpath使用详解一、引言在Python爬虫开发中,数据提取是一个至关重要的环节。xpath作为一门
Faiss:高效相似性搜索与聚类的利器
网络·魚
大数据 faiss
Faiss是一个针对大规模向量集合的相似性搜索库,由FacebookAIResearch开发。它提供了一系列高效的算法和数据结构,用于加速向量之间的相似性搜索,特别是在大规模数据集上。本文将介绍Faiss的原理、核心功能以及如何在实际项目中使用它。Faiss原理:近似最近邻搜索:Faiss的核心功能之一是近似最近邻搜索,它能够高效地在大规模数据集中找到与给定查询向量最相似的向量。这种搜索是近似的,
【华为OD技术面试真题 - 技术面】- python八股文真题题库(1)
算法大师
华为od 面试 python
华为OD面试真题精选专栏:华为OD面试真题精选目录:2024华为OD面试手撕代码真题目录以及八股文真题目录文章目录华为OD面试真题精选1.数据预处理流程数据预处理的主要步骤工具和库2.介绍线性回归、逻辑回归模型线性回归(LinearRegression)模型形式:关键点:逻辑回归(LogisticRegression)模型形式:关键点:参数估计与评估:3.python浅拷贝及深拷贝浅拷贝(Shal
数字里的世界17期:2021年全球10大顶级数据中心,中国移动榜首
张三叨
你知道吗?2016年,全球的数据中心共计用电4160亿千瓦时,比整个英国的发电量还多40%!前言每天,我们都会创造超过250万TB的数据。并且随着物联网(IOT)的不断普及,这一数据将持续增长。如此庞大的数据被存储在被称为“数据中心”的专用设施中。虽然最早的数据中心建于20世纪40年代,但直到1997-2000年的互联网泡沫期间才逐渐成为主流。当前人类的技术,比如人工智能和机器学习,已经将我们推向
nosql数据库技术与应用知识点
皆过客,揽星河
NoSQL nosql 数据库 大数据 数据分析 数据结构 非关系型数据库
Nosql知识回顾大数据处理流程数据采集(flume、爬虫、传感器)数据存储(本门课程NoSQL所处的阶段)Hdfs、MongoDB、HBase等数据清洗(入仓)Hive等数据处理、分析(Spark、Flink等)数据可视化数据挖掘、机器学习应用(Python、SparkMLlib等)大数据时代存储的挑战(三高)高并发(同一时间很多人访问)高扩展(要求随时根据需求扩展存储)高效率(要求读写速度快)
ztree设置禁用节点
3213213333332132
JavaScript ztree json setDisabledNode Ajax
ztree设置禁用节点的时候注意,当使用ajax后台请求数据,必须要设置为同步获取数据,否者会获取不到节点对象,导致设置禁用没有效果。
$(function(){
showTree();
setDisabledNode();
});
JVM patch by Taobao
bookjovi
java HotSpot
在网上无意中看到淘宝提交的hotspot patch,共四个,有意思,记录一下。
7050685:jsdbproc64.sh has a typo in the package name
7058036:FieldsAllocationStyle=2 does not work in 32-bit VM
7060619:C1 should respect inline and
将session存储到数据库中
dcj3sjt126com
sql PHP session
CREATE TABLE sessions (
id CHAR(32) NOT NULL,
data TEXT,
last_accessed TIMESTAMP NOT NULL,
PRIMARY KEY (id)
);
<?php
/**
* Created by PhpStorm.
* User: michaeldu
* Date
Vector
171815164
vector
public Vector<CartProduct> delCart(Vector<CartProduct> cart, String id) {
for (int i = 0; i < cart.size(); i++) {
if (cart.get(i).getId().equals(id)) {
cart.remove(i);
各连接池配置参数比较
g21121
连接池
排版真心费劲,大家凑合看下吧,见谅~
Druid
DBCP
C3P0
Proxool
数据库用户名称 Username Username User
数据库密码 Password Password Password
驱动名
[简单]mybatis insert语句添加动态字段
53873039oycg
mybatis
mysql数据库,id自增,配置如下:
<insert id="saveTestTb" useGeneratedKeys="true" keyProperty="id"
parameterType=&
struts2拦截器配置
云端月影
struts2拦截器
struts2拦截器interceptor的三种配置方法
方法1. 普通配置法
<struts>
<package name="struts2" extends="struts-default">
&
IE中页面不居中,火狐谷歌等正常
aijuans
IE中页面不居中
问题是首页在火狐、谷歌、所有IE中正常显示,列表页的页面在火狐谷歌中正常,在IE6、7、8中都不中,觉得可能那个地方设置的让IE系列都不认识,仔细查看后发现,列表页中没写HTML模板部分没有添加DTD定义,就是<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3
String,int,Integer,char 几个类型常见转换
antonyup_2006
html sql .net
如何将字串 String 转换成整数 int?
int i = Integer.valueOf(my_str).intValue();
int i=Integer.parseInt(str);
如何将字串 String 转换成Integer ?
Integer integer=Integer.valueOf(str);
如何将整数 int 转换成字串 String ?
1.
PL/SQL的游标类型
百合不是茶
显示游标(静态游标) 隐式游标 游标的更新和删除 %rowtype ref游标(动态游标)
游标是oracle中的一个结果集,用于存放查询的结果;
PL/SQL中游标的声明;
1,声明游标
2,打开游标(默认是关闭的);
3,提取数据
4,关闭游标
注意的要点:游标必须声明在declare中,使用open打开游标,fetch取游标中的数据,close关闭游标
隐式游标:主要是对DML数据的操作隐
JUnit4中@AfterClass @BeforeClass @after @before的区别对比
bijian1013
JUnit4 单元测试
一.基础知识
JUnit4使用Java5中的注解(annotation),以下是JUnit4常用的几个annotation: @Before:初始化方法 对于每一个测试方法都要执行一次(注意与BeforeClass区别,后者是对于所有方法执行一次)@After:释放资源 对于每一个测试方法都要执行一次(注意与AfterClass区别,后者是对于所有方法执行一次
精通Oracle10编程SQL(12)开发包
bijian1013
oracle 数据库 plsql
/*
*开发包
*包用于逻辑组合相关的PL/SQL类型(例如TABLE类型和RECORD类型)、PL/SQL项(例如游标和游标变量)和PL/SQL子程序(例如过程和函数)
*/
--包用于逻辑组合相关的PL/SQL类型、项和子程序,它由包规范和包体两部分组成
--建立包规范:包规范实际是包与应用程序之间的接口,它用于定义包的公用组件,包括常量、变量、游标、过程和函数等
--在包规
【EhCache二】ehcache.xml配置详解
bit1129
ehcache.xml
在ehcache官网上找了多次,终于找到ehcache.xml配置元素和属性的含义说明文档了,这个文档包含在ehcache.xml的注释中!
ehcache.xml : http://ehcache.org/ehcache.xml
ehcache.xsd : http://ehcache.org/ehcache.xsd
ehcache配置文件的根元素是ehcahe
ehcac
java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderL
白糖_
java eclipse spring tomcat Web
今天学习spring+cxf的时候遇到一个问题:在web.xml中配置了spring的上下文监听器:
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
随后启动
angular.element
boyitech
AngularJS AngularJS API angular.element
angular.element
描述: 包裹着一部分DOM element或者是HTML字符串,把它作为一个jQuery元素来处理。(类似于jQuery的选择器啦) 如果jQuery被引入了,则angular.element就可以看作是jQuery选择器,选择的对象可以使用jQuery的函数;如果jQuery不可用,angular.e
java-给定两个已排序序列,找出共同的元素。
bylijinnan
java
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class CommonItemInTwoSortedArray {
/**
* 题目:给定两个已排序序列,找出共同的元素。
* 1.定义两个指针分别指向序列的开始。
* 如果指向的两个元素
sftp 异常,有遇到的吗?求解
Chen.H
java jcraft auth jsch jschexception
com.jcraft.jsch.JSchException: Auth cancel
at com.jcraft.jsch.Session.connect(Session.java:460)
at com.jcraft.jsch.Session.connect(Session.java:154)
at cn.vivame.util.ftp.SftpServerAccess.connec
[生物智能与人工智能]神经元中的电化学结构代表什么?
comsci
人工智能
我这里做一个大胆的猜想,生物神经网络中的神经元中包含着一些化学和类似电路的结构,这些结构通常用来扮演类似我们在拓扑分析系统中的节点嵌入方程一样,使得我们的神经网络产生智能判断的能力,而这些嵌入到节点中的方程同时也扮演着"经验"的角色....
我们可以尝试一下...在某些神经
通过LAC和CID获取经纬度信息
dai_lm
lac cid
方法1:
用浏览器打开http://www.minigps.net/cellsearch.html,然后输入lac和cid信息(mcc和mnc可以填0),如果数据正确就可以获得相应的经纬度
方法2:
发送HTTP请求到http://www.open-electronics.org/celltrack/cell.php?hex=0&lac=<lac>&cid=&
JAVA的困难分析
datamachine
java
前段时间转了一篇SQL的文章(http://datamachine.iteye.com/blog/1971896),文章不复杂,但思想深刻,就顺便思考了一下java的不足,当砖头丢出来,希望引点和田玉。
-----------------------------------------------------------------------------------------
小学5年级英语单词背诵第二课
dcj3sjt126com
english word
money 钱
paper 纸
speak 讲,说
tell 告诉
remember 记得,想起
knock 敲,击,打
question 问题
number 数字,号码
learn 学会,学习
street 街道
carry 搬运,携带
send 发送,邮寄,发射
must 必须
light 灯,光线,轻的
front
linux下面没有tree命令
dcj3sjt126com
linux
centos p安装
yum -y install tree
mac os安装
brew install tree
首先来看tree的用法
tree 中文解释:tree
功能说明:以树状图列出目录的内容。
语 法:tree [-aACdDfFgilnNpqstux][-I <范本样式>][-P <范本样式
Map迭代方式,Map迭代,Map循环
蕃薯耀
Map循环 Map迭代 Map迭代方式
Map迭代方式,Map迭代,Map循环
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
蕃薯耀 2015年
Spring Cache注解+Redis
hanqunfeng
spring
Spring3.1 Cache注解
依赖jar包:
<!-- redis -->
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-redis</artifactId>
Guava中针对集合的 filter和过滤功能
jackyrong
filter
在guava库中,自带了过滤器(filter)的功能,可以用来对collection 进行过滤,先看例子:
@Test
public void whenFilterWithIterables_thenFiltered() {
List<String> names = Lists.newArrayList("John"
学习编程那点事
lampcy
编程 android PHP html5
一年前的夏天,我还在纠结要不要改行,要不要去学php?能学到真本事吗?改行能成功吗?太多的问题,我终于不顾一切,下定决心,辞去了工作,来到传说中的帝都。老师给的乘车方式还算有效,很顺利的就到了学校,赶巧了,正好学校搬到了新校区。先安顿了下来,过了个轻松的周末,第一次到帝都,逛逛吧!
接下来的周一,是我噩梦的开始,学习内容对我这个零基础的人来说,除了勉强完成老师布置的作业外,我已经没有时间和精力去
架构师之流处理---------bytebuffer的mark,limit和flip
nannan408
ByteBuffer
1.前言。
如题,limit其实就是可以读取的字节长度的意思,flip是清空的意思,mark是标记的意思 。
2.例子.
例子代码:
String str = "helloWorld";
ByteBuffer buff = ByteBuffer.wrap(str.getBytes());
Sy
org.apache.el.parser.ParseException: Encountered " ":" ": "" at line 1, column 1
Everyday都不同
$ 转义 el表达式
最近在做Highcharts的过程中,在写js时,出现了以下异常:
严重: Servlet.service() for servlet jsp threw exception
org.apache.el.parser.ParseException: Encountered " ":" ": "" at line 1,
用Java实现发送邮件到163
tntxia
java实现
/*
在java版经常看到有人问如何用javamail发送邮件?如何接收邮件?如何访问多个文件夹等。问题零散,而历史的回复早已经淹没在问题的海洋之中。
本人之前所做过一个java项目,其中包含有WebMail功能,当初为用java实现而对javamail摸索了一段时间,总算有点收获。看到论坛中的经常有此方面的问题,因此把我的一些经验帖出来,希望对大家有些帮助。
此篇仅介绍用
探索实体类存在的真正意义
java小叶檀
POJO
一. 实体类简述
实体类其实就是俗称的POJO,这种类一般不实现特殊框架下的接口,在程序中仅作为数据容器用来持久化存储数据用的
POJO(Plain Old Java Objects)简单的Java对象
它的一般格式就是
public class A{
private String id;
public Str