数字图像处理:实验二
任务一:
将不同像素(32、64和256)的原图像放大为像素大 小为1024*1024的图像(图像自选)

要求:1)输出一幅图,该图包含六幅子图,第一排是原图,第 二排是对应放大的图; 2)每幅图的顶头都加上小标题
(解释过程原理:实际上这里用到的图像操作就是调用函数来增加它的像素点数,实际生活中的压缩和解压图像中也会有这种操作,用法就是调用imresize函数即可。之余之后建立一个新的窗口和简单的内容分布,实际上的操作可以会看第一章的基本操作。)
A = imread('1.jpg'); %将图像A的大小调整为32x32像素,结果存储在变量img32中
img32 = imresize(A,[32,32]);
%将图像A的大小调整为64x64像素,结果存储在变量img64中
img64 = imresize(A,[64,64]);
%将图像A的大小调整为256x256像素,结果存储在变量img256中
img256 = imresize(A,[256,256]); %将32x32的图像img32放大到1024x1024像素,结果存储在变量img32_resized中
img32_resized = imresize(img32, [1024, 1024]);
%将64x64的图像img64放大到1024x1024像素,结果存储在变量img64_resized中
img64_resized = imresize(img64, [1024, 1024]);
%将256x256的图像img256放大到1024x1024像素,结果存储在变量img256_resized中
img256_resized = imresize(img256, [1024, 1024]); %创建一个新的图形窗口用于显示图像
figure; %在图形窗口的2x3网格中的第一个位置显示32x32的原图
subplot(2,3,1);
imshow(img32); % 显示图像
title('32x32 原图'); % 设置图像标题 %在图形窗口的2x3网格中的第二个位置显示64x64的原图
subplot(2,3,2);
imshow(img64); % 显示图像
title('64x64 原图'); % 设置图像标题 %在图形窗口的2x3网格中的第三个位置显示256x256的原图
subplot(2,3,3);
imshow(img256); % 显示图像
title('256x256 原图'); % 设置图像标题 %在图形窗口的2x3网格中的第四个位置显示32x32放大到1024x1024的图像
subplot(2,3,4);
imshow(img32_resized); % 显示图像
title('32x32 放大到1024x1024'); % 设置图像标题 % 在图形窗口的2x3网格中的第五个位置显示64x64放大到1024x1024的图像
subplot(2,3,5);
imshow(img64_resized); % 显示图像
title('64x64 放大到1024x1024'); % 设置图像标题 %在图形窗口的2x3网格中的第六个位置显示256x256放大到1024x1024的图像
subplot(2,3,6);
imshow(img256_resized); % 显示图像
title('256x256 放大到1024x1024'); % 设置图像标题
结果如下:

任务二:去噪声
要求:
1)对所选图添加噪声(可以选择高斯噪声或椒盐噪声),次数为10次、 30 次和50次;
2)对添加噪声后的图像去噪;
3)输出一幅图,该图包含七幅子图,共三排,第一排是 原图,第二排是添加噪声后的图;第三排是对应去噪声后的图像;
4)每幅图的顶头都加上小标踢;
(操作重点:第一、了解所添加的噪声类型和matlab函数的使用方法,第二、了解噪声的特性,第三、学会查找和调用函数)
img1 = imread('1.png');
% 如果是彩色图像,则将其转换为灰度图像
if size(img1, 3) == 3 img = rgb2gray(img1); % 使用rgb2gray函数将彩色图像转换为灰度图像
end % 向灰度图像img中添加椒盐噪声
% 噪声密度为0.01,相当于添加“10次”噪声
noisy_img10 = imnoise(img, 'salt & pepper', 0.01);
% 噪声密度为0.03,相当于添加“30次”噪声
noisy_img30 = imnoise(img, 'salt & pepper', 0.03);
% 噪声密度为0.05,相当于添加“50次”噪声
noisy_img50 = imnoise(img, 'salt & pepper', 0.05); % 使用中值滤波对添加噪声后的图像进行去噪处理
denoised_img10 = medfilt2(noisy_img10); % 对噪声密度为0.01的图像进行去噪
denoised_img30 = medfilt2(noisy_img30); % 对噪声密度为0.03的图像进行去噪
denoised_img50 = medfilt2(noisy_img50); % 对噪声密度为0.05的图像进行去噪 % 创建一个新的图形窗口用于显示图像
figure; % 在图形窗口的3x3网格中的第一个位置显示原图
subplot(3,3,1);
imshow(img1); % 显示原图(如果是彩色图则显示彩色图,如果是灰度图则显示灰度图)
title('原图'); % 设置图像标题 % 在图形窗口的3x3网格中的第四、五、六个位置分别显示添加不同密度椒盐噪声后的图像
subplot(3,3,4);
imshow(noisy_img10); % 显示噪声密度为0.01的图像
title('椒盐噪声密度0.01'); % 设置图像标题
subplot(3,3,5);
imshow(noisy_img30); % 显示噪声密度为0.03的图像
title('椒盐噪声密度0.03'); % 设置图像标题
subplot(3,3,6);
imshow(noisy_img50); % 显示噪声密度为0.05的图像
title('椒盐噪声密度0.05'); % 设置图像标题
% 在图形窗口的3x3网格中的第七、八、九个位置分别显示去噪后的图像
% 注意:原代码中的标题有误,将“高斯噪声”更正为“椒盐噪声”
subplot(3,3,7);
imshow(denoised_img10); % 显示去噪后的噪声密度为0.01的图像
title('去噪后的椒盐噪声密度0.01'); % 设置图像标题
subplot(3,3,8);
imshow(denoised_img30); % 显示去噪后的噪声密度为0.03的图像
title('去噪后的椒盐噪声密度0.03'); % 设置图像标题
subplot(3,3,9);
imshow(denoised_img50); % 显示去噪后的噪声密度为0.05的图像
title('去噪后的椒盐噪声密度0.05'); % 设置图像标题
结果:

任务三:图像的补集以及对两幅图求并集
要求:
1)求原图的补集;
2)以该图像平均灰度值的3倍获得均值图,并将它与原图做并集操作;
3)输出一幅图,该图包含一排的三幅子图,从左到右为: 原图、补集图和并集图。
4)每幅图的顶头都加上小标题。
(操作重点:第一、了解数字图像处理时的并集、补集的含义,主要是记住其实现时存在的图像然后理解就方便很多,第二、注意理解要求(2)中的获得均值图后在与原图求取并集操作,了解其作用,咸鱼哥建议可以先尝试一下不做并集得到的图像,这样会更方便理解这个概念。)
A = imread('1.jpg'); % 将图像A转换为双精度类型(double),并将像素值归一化到 [0, 1] 区间
% 这是因为imread读取的图像通常是uint8类型,像素值在 [0, 255] 区间
A = im2double(A);
img_1 = A;
img_2 = A;
% 计算原图像A灰度值的三倍,并将结果存储在变量N中
N = 3 * A;
% 使用min函数确保N中的值不超过1,对于大于1的值,将其设置为1
N = min(N, 1);
% 调用自定义函数set_comple计算图像A的补集,并将结果存储在变量h中
% 补集是指将图像中的每个像素值用1减去该像素值得到的图像
h = set_comple(A);
% 调用自定义函数set_union计算图像A和它的三倍图像N的并集,并将结果存储在变量j中
% 对于两幅图像来说,并集是指逐元素取两幅图像中较大的那个值
j = set_union(A, N); % 创建一个新的图形窗口用于显示图像
figure;
% 在图形窗口的1x3网格中的第一个位置显示原图A
subplot(1, 3, 1), imshow(A), title('原图');
% 在图形窗口的1x3网格中的第二个位置显示补集图像h
subplot(1, 3, 2), imshow(h), title('补集图');
% 在图形窗口的1x3网格中的第三个位置显示并集图像j
subplot(1, 3, 3), imshow(j), title('并集图'); % 定义计算补集的函数set_comple
% 输入参数f为待计算补集的图像
% 输出参数img_1为计算得到的补集图像
function img_1 = set_comple(f) img_1 = 1 - f; % 计算补集:将每个像素值用1减去
end % 定义计算并集的函数set_union
% 输入参数f1和f2为待计算并集的两幅图像
% 输出参数img_2为计算得到的并集图像
function img_2 = set_union(f1, f2) img_2 = max(f1, f2); % 计算并集:逐元素取两幅图像中较大的值
End
结果:

任务四:多种噪声添加及多种滤波
要求:
1)对原图添加多种不同类型、不同程度的噪声,包括高斯噪声、椒盐噪声、泊松噪声等(至少3种噪声),噪声参数自己拟定, 但须得到有对比性噪声效果的图像(泊松噪声的参数可以只添加1 次);
2)然后使用不同的滤波方法进行降噪,如中值滤波、自适 应中值滤波、小波降噪等(至少3种滤波方法);
3)输出一幅图,该图至少包含原图(1张)、噪声图(至少5张)和滤波图(至少3张),一共至少9张子图;
4)每幅图的顶头都加上小标题。
(操作重点:这里针对不同类型、不同程度的噪声要重点理解,可以直接在matlab的函数库中搜索函数,这样会显示噪声类型和种类,但是要求英语水平足够扎实才推荐去看。)
d = imread('3.jfif');
% 将图像d转换为双精度类型(double),以便进行后续处理
% 因为imread读取的图像通常是uint8类型,像素值在 [0, 255] 区间
% 转换为double后,像素值会被归一化到 [0, 1] 区间
d_double = im2double(d);
% 添加噪声并滤波处理部分
% 向图像d_double添加高斯噪声,方差为(0.005*5)^2,相当于添加5次高斯噪声的累积效果(但实际上是直接设置了一个较大的方差)
I1 = imnoise(d_double, 'gaussian', 0, 0.005*5^2);
% 向I1添加泊松噪声
I1 = imnoise(I1, 'poisson');
% 向I1添加斑点噪声,噪声密度为0.2
I111 = imnoise(I1, 'speckle', 0.2);
% 向图像d_double添加高斯噪声,方差为(0.001*2)^2,相当于添加2次高斯噪声的累积效果(但实际上是直接设置了一个较小的方差)
I2 = imnoise(d_double, 'gaussian', 0, 0.001*2^2);
% 向I2添加泊松噪声
I2 = imnoise(I2, 'poisson');
% 向I2添加斑点噪声,噪声密度为0.1
I222 = imnoise(I2, 'speckle', 0.1);
% 向图像d_double添加一次较高方差的高斯噪声,方差为0.1^2
I3 = imnoise(d_double, 'gaussian', 0, 0.1^2);
% 向I3添加泊松噪声
I3 = imnoise(I3, 'poisson');
% 向I3添加斑点噪声,噪声密度非常低,为0.001
I333 = imnoise(I3, 'speckle', 0.001);
% 向图像d_double添加椒盐噪声,噪声密度为0.03
I4 = imnoise(d_double, 'salt & pepper', 0.03);
% 向I4添加高斯噪声,方差为0.1^2
I44 = imnoise(I4, 'gaussian', 0, 0.1^2);
% 向I44添加泊松噪声
I444 = imnoise(I44, 'poisson');
% 这行代码是多余的,因为I444已经是double类型,但不会影响后续操作
I444_d = I444;
% 向图像d_double添加椒盐噪声,噪声密度为0.02(实际上这是椒盐噪声,但比例较低时椒噪声可能不明显)
I5 = imnoise(d_double, 'salt & pepper', 0.02);
% 这行代码没有做任何处理,可能是为了保持格式一致而保留的
I5 = I5;
% 向I5添加高斯噪声,方差为0.01^2
I55 = imnoise(I5, 'gaussian', 0, 0.01^2);
% 向I55添加泊松噪声
I555 = imnoise(I55, 'poisson');
% 滤波处理部分
% 创建一个5x5大小的高斯滤波器,标准差为1.4
h1 = fspecial('gaussian', [5 5], 1.4);
% 使用高斯滤波器h1对I444_d进行滤波处理
f_I444 = imfilter(I444_d, h1);
% 创建一个3x3大小的均值滤波器
h2 = fspecial('average', [3 3]);
% 使用均值滤波器h2对I333进行滤波处理
f_I333 = imfilter(I333, h2);
% 使用均值滤波器h2对I555进行滤波处理
f_I555 = imfilter(I555, h2);
% 显示图像部分
% 创建一个新的图形窗口
figure;
% 在3x3的网格中的第一个位置显示原图像d
subplot(3,3,1), imshow(d), title('原图像');
% 在3x3的网格中的第二个位置显示噪声图1(经过高斯、泊松、斑点噪声处理后的图像I111)
subplot(3,3,2), imshow(I111), title('噪声图1(高斯+泊松+斑点)');
% 在3x3的网格中的第三个位置显示噪声图2(经过高斯、泊松、斑点噪声处理后的图像I222)
subplot(3,3,3), imshow(I222), title('噪声图2(高斯+泊松+斑点)');
% 在3x3的网格中的第四个位置显示噪声图3(经过高斯、泊松、斑点噪声处理后的图像I333)
subplot(3,3,4), imshow(I333), title('噪声图3(高斯+泊松+斑点)');
% 在3x3的网格中的第五个位置显示噪声图4(经过椒盐、高斯、泊松噪声处理后的图像I444)
subplot(3,3,5), imshow(I444), title('噪声图4(椒盐+高斯+泊松)');
% 在3x3的网格中的第六个位置显示噪声图5(经过椒盐、高斯、泊松噪声处理后的图像I555)
subplot(3,3,6), imshow(I555), title('噪声图5(椒盐+高斯+泊松)');
% 在3x3的网格中的第七个位置显示对噪声图4进行高斯滤波后的图像f_I444
subplot(3,3,7), imshow(f_I444), title('对噪声图4高斯滤波');
% 在3x3的网格中的第八个位置显示对噪声图3进行平均滤波后的图像f_I333
subplot(3,3,8), imshow(f_I333), title('对噪声图3平均滤波');
% 在3x3的网格中的第九个位置显示对噪声图5进行平均滤波后的图像f_I555
subplot(3,3,9), imshow(f_I555), title('对噪声图5平均滤波');
结果:

任务五:旋转和放大(原图自选)
要求:
1)将原图像旋转不同角度(至少2个角度),并对旋转后的图放大处理(放大到1024*1024);
2)输出一幅图,该图至少包含原图(1张)、旋转图(至少2张)和滤波图(至少2张),一共至少5张子图;
3)每幅图的顶头都加上小标题。
(操作重点:这里的操作基本上没有困难,所以咸鱼哥不重点赘述,记住imrotate和 imresize两个函数的作用就可以了)
img = imread('1.png'); % 使用imrotate函数将图像img旋转45度,结果存储在rotated_img_45中
rotated_img_45 = imrotate(img, 45);
% 使用imrotate函数将图像img旋转90度,结果存储在rotated_img_90中
rotated_img_90 = imrotate(img, 90); % 使用imresize函数将旋转45度后的图像rotated_img_45放大到1024x1024像素,结果存储在rotated_img_45_resized中
rotated_img_45_resized = imresize(rotated_img_45, [1024, 1024]);
% 使用imresize函数将旋转90度后的图像rotated_img_90放大到1024x1024像素,结果存储在rotated_img_90_resized中
rotated_img_90_resized = imresize(rotated_img_90, [1024, 1024]); % 创建一个新的图形窗口,用于显示图像
figure; % 使用subplot函数在2x3的网格中的第一个位置创建一个子图,并显示原图img
subplot(2,3,1);
imshow(img);
title('原图'); % 设置子图的标题为“原图” % 使用subplot函数在2x3的网格中的第二个位置创建一个子图,并显示旋转45度后的图像rotated_img_45
subplot(2,3,2);
imshow(rotated_img_45);
title('旋转45度'); % 设置子图的标题为“旋转45度” % 使用subplot函数在2x3的网格中的第三个位置创建一个子图,并显示旋转90度后的图像rotated_img_90
subplot(2,3,3);
imshow(rotated_img_90);
title('旋转90度'); % 设置子图的标题为“旋转90度” % 使用subplot函数在2x3的网格中的第四个位置创建一个子图,并显示旋转45度后放大的图像rotated_img_45_resized
subplot(2,3,4);
imshow(rotated_img_45_resized);
title('旋转45度后放大'); % 设置子图的标题为“旋转45度后放大” % 使用subplot函数在2x3的网格中的第五个位置创建一个子图,并显示旋转90度后放大的图像rotated_img_90_resized
subplot(2,3,5);
imshow(rotated_img_90_resized);
title('旋转90度后放大'); % 设置子图的标题为“旋转90度后放大”
结果:

第二章针对于数字图像处理的内容的练习和实际的操作,咸鱼哥个人觉得本章内容较为简单,也比较适合初学者和爱好者来学习,本章代码基本上我把逻辑和操作都写上了注释,方便大家理解和使用,为了促进数字图像处理技术的学习,我们一起加油!uu们!
相关文章:
数字图像处理:实验二
任务一: 将不同像素(32、64和256)的原图像放大为像素大 小为1024*1024的图像(图像自选) 要求:1)输出一幅图,该图包含六幅子图,第一排是原图,第 二排是对应放大…...
基于海思soc的智能产品开发(高、中、低soc、以及和fpga的搭配)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 市场上关于图像、音频的soc其实非常多,这里面有高、中、低档,开发方式也不相同。之所以会这样,有价格的因素&am…...
SSM旅游信息管理系统
🍅点赞收藏关注 → 添加文档最下方联系方式可咨询本源代码、数据库🍅 本人在Java毕业设计领域有多年的经验,陆续会更新更多优质的Java实战项目希望你能有所收获,少走一些弯路。🍅关注我不迷路🍅 项目视频 …...
FastADMIN实现网站启动时执行程序的方法
FastAdmin基于ThinkPHP框架:ThinkPHP框架中与 Application_Start 类似的功能可以在应用初始化钩子(Hook)中实现。在FastAdmin项目中,一般在应用的 common.php 文件中定义行为(Behavior)来实现类似功能。 定…...
【威联通】FTP服务提示:服务器回应不可路由的地址。被动模式失败。
FTP服务器提示:服务器回应不可路由的地址。被动模式失败。 问题原因网络结构安全管理配置服务器配置网关 问题 FTP服务器提示:服务器回应不可路由的地址…...
nginx常用配置 (含负载均衡、反向代理、限流、Gzip压缩、图片防盗链 等示例)
nginx的配置文件通常在 /etc/nginx/nginx.conf , /etc/nginx/conf.d/*.conf 中, 一般直接 改 conf.d目录下的 default.conf文件, 然后 先检测配置文件是否有错误 nginx -t 再重新加载配置文件 或 重启nginx,命令如下 nginx -s reload 或…...
21.1、网络设备安全概述
目录 网络设备安全概况——交换机、路由器安全威胁 网络设备安全概况——交换机、路由器安全威胁 第一个是MAC地址泛洪,MAC地址表记录着交换机拥有的MAC地址跟端口的对应关系 MAC地址表主要是三个字段,MAC地址对应的端口号,也就表示主机是连…...
通过idea创建的springmvc工程需要的配置
在创建的spring mvc工程中,使用idea开发之前需要配置文件包括porm.xml、web.xml、springmvc.xml 1、porm.xml 工程以来的spring库,主要包括spring-aop、spring-web、spring-webmvc,示例配置如下: <project xmlns"http:/…...
Redis 持久化机制:RDB 和 AOF
Redis 持久化机制:RDB 和 AOF Redis 主要提供了两种持久化方式:**RDB(Redis Database)**和 AOF(Append-Only File)。它们各自的实现原理、优缺点以及适用场景如下。 1. RDB(Redis Database&…...
【博客之星评选】2024年度前端学习总结
故事的开端...始于2024年第一篇前端技术博客 那故事的终末...也该结束于陪伴了我一整年的前端知识了 踏入 2025 年,满心激动与自豪,我成功闯进了《2024 年度 CSDN 博客之星总评选》的 TOP300。作为一名刚接触技术写作不久的萌新,这次能走到这…...
将IDLE里面python环境pyqt5配置的vscode
首先安装pyqt5全套:pip install pyqt5-tools 打开Vscode: 安装第三方扩展:PYQT Integration 成功配置designer.exe的路径【个人安装pyqt5的执行路径】,便可直接打开UI文件,进行编辑。 配置pyuic,如果下图填写方法使用…...
【专题三:穷举vs暴搜vs深搜vs回溯vs剪枝】46. 全排列
1.题目解析 2.讲解算法原理 1.首先画出决策树,越详细越好 2.设计代码 全局变量 List<List<Integer>> retList<Integer> pathboolean[] check dfs函数 仅关心某一节点在干什么 细节问题回溯 干掉path最后一个元素修改check权限 剪枝 check中为…...
使用傅里叶变换进行图像边缘检测
使用傅里叶变换进行图像边缘检测 今天我们介绍通过傅里叶变换求得图像的边缘 什么是傅立叶变换? 简单来说,傅里叶变换是将输入的信号分解成指定样式的构造块。例如,首先通过叠加具有不同频率的两个或更多个正弦函数而生成信号f(x…...
DDD FAQs梳理
术语 领域:一种专门活动的范围、部类。 子域:一个领域细分出的多个子领域。 核心域:具备核心竞争力的子域。 通用域:同时被多个子域使用的通用功能子域,比如认证、权限。 支撑域:一些辅助性或后台功能组成…...
新星杯-ESP32智能硬件开发--SoC基础
本博文内容导读 1、当前嵌入式系统的发展情况,分析SoC作为物联网开发的重要技术,是未来物联网发展重要方向。 2、介绍SoC系统的组成和系统特点,了解SoC打下SoC基础。 3、介绍基于ESP32的SoC系列开发板,ESP32开发的系统功能进行总…...
WDM_OTN_基础知识_波分系统的网络位置
波分系统简介和OTU 在这节课的内容中,我们主要介绍,波分系统在整个通信网络中的位置,波分系统的构成和它的架构,波分设备的构成和信号图,以及OUT的功能和分类及波分系统的应用场景。 波分系统在整个通信网络中&#x…...
计算机网络 (46)简单网络管理协议SNMP
前言 简单网络管理协议(SNMP,Simple Network Management Protocol)是一种用于在计算机网络中管理网络节点的标准协议。 一、概述 SNMP是基于TCP/IP五层协议中的应用层协议,它使网络管理员能够管理网络效能,发现并解决网…...
Excel重新踩坑6:工作实战总结之根据筛选条件求平均成绩
一、前言: 这个博客的实战场景:给了一组学生数据,这些数据中,有全市20个社区,1-9年级的学生各科成绩。要求按照各社区统计1-9年级的所有学生各科平均值。下面首先介绍会用到的一些函数,然后再简单说明实战…...
使用 Java 和 FreeMarker 实现自动生成供货清单,动态生成 Word 文档,简化文档处理流程。
在上一篇博客中主要是使用SpringBootApache POI实现了BOM物料清单Excel表格导出,详见以下博客: Spring Boot Apache POI 实现 Exc()el 导出:BOM物料清单生成器(支持中文文件名、样式美化、数据合并&#…...
20250118拿掉荣品pro-rk3566开发板上Android13下在uboot和kernel启动阶段的Rockchip这个LOGO标识
20250118拿掉荣品pro-rk3566开发板上Android13下在uboot和kernel启动阶段的Rockchip这个LOGO标识 2025/1/18 15:12 缘起:做飞凌OK3588-C开发板/核心板【Linux R4】的时候,测试/生产要求没有开机LOGO【飞凌/Rockchip】 要求:黑屏或者中性界面。…...
安卓基础(aar)
重新设置java21的环境,临时设置 $env:JAVA_HOME "D:\Android Studio\jbr" 查看当前环境变量 JAVA_HOME 的值 echo $env:JAVA_HOME 构建ARR文件 ./gradlew :private-lib:assembleRelease 目录是这样的: MyApp/ ├── app/ …...
C#学习第29天:表达式树(Expression Trees)
目录 什么是表达式树? 核心概念 1.表达式树的构建 2. 表达式树与Lambda表达式 3.解析和访问表达式树 4.动态条件查询 表达式树的优势 1.动态构建查询 2.LINQ 提供程序支持: 3.性能优化 4.元数据处理 5.代码转换和重写 适用场景 代码复杂性…...
【堆垛策略】设计方法
堆垛策略的设计是积木堆叠系统的核心,直接影响堆叠的稳定性、效率和容错能力。以下是分层次的堆垛策略设计方法,涵盖基础规则、优化算法和容错机制: 1. 基础堆垛规则 (1) 物理稳定性优先 重心原则: 大尺寸/重量积木在下…...
02.运算符
目录 什么是运算符 算术运算符 1.基本四则运算符 2.增量运算符 3.自增/自减运算符 关系运算符 逻辑运算符 &&:逻辑与 ||:逻辑或 !:逻辑非 短路求值 位运算符 按位与&: 按位或 | 按位取反~ …...
【免费数据】2005-2019年我国272个地级市的旅游竞争力多指标数据(33个指标)
旅游业是一个城市的重要产业构成。旅游竞争力是一个城市竞争力的重要构成部分。一个城市的旅游竞争力反映了其在旅游市场竞争中的比较优势。 今日我们分享的是2005-2019年我国272个地级市的旅游竞争力多指标数据!该数据集源自2025年4月发表于《地理学报》的论文成果…...
2025.6.9总结(利与弊)
凡事都有两面性。在大厂上班也不例外。今天找开发定位问题,从一个接口人不断溯源到另一个 接口人。有时候,不知道是谁的责任填。将工作内容分的很细,每个人负责其中的一小块。我清楚的意识到,自己就是个可以随时替换的螺丝钉&…...
EasyRTC音视频实时通话功能在WebRTC与智能硬件整合中的应用与优势
一、WebRTC与智能硬件整合趋势 随着物联网和实时通信需求的爆发式增长,WebRTC作为开源实时通信技术,为浏览器与移动应用提供免插件的音视频通信能力,在智能硬件领域的融合应用已成必然趋势。智能硬件不再局限于单一功能,对实时…...
NLP学习路线图(三十四): 命名实体识别(NER)
一、命名实体识别(NER)是什么? 命名实体识别(Named Entity Recognition, NER)是自然语言处理中的一项关键序列标注任务。其核心目标是从非结构化的文本中自动识别出特定类别的名词性短语,并将其归类到预定义的类别中。 核心目标:找到文本中提到的命名实体,并分类。 典…...
设计模式-观察着模式
观察者模式 观察者模式 (Observer Pattern) 是一种行为型设计模式,它定义了对象之间一种一对多的依赖关系,当一个对象(称为主题或可观察者)的状态发生改变时,所有依赖于它的对象(称为观察者)都…...
Faiss vs Milvus 深度对比:向量数据库技术选型指南
Faiss vs Milvus 深度对比:向量数据库技术选型指南 引言:向量数据库的时代抉择 在AI应用爆发的今天,企业和开发者面临着如何存储和检索海量向量数据的重大技术选择。作为当前最受关注的两大解决方案,Faiss和Milvus代表了两种不同…...
