收集整理了一份《2024年最新Python全套学习资料》免费送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Python知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来
如果你需要这些资料,可以添加V无偿获取:hxbc188 (备注666)
正文
使用以下代码通过简单的灰度阈值来创建二进制图像,例如,如果像素值大于0.5,则分配1;如果像素值小于0.5,则分配0。
二进制和灰度图像不是完美的,因为它们可能包含许多缺陷,并且会被噪声或纹理扭曲。形态图像转换旨在通过使用图像的形式和结构来消除这些缺陷。这些操作仅依赖于像素值的相对顺序,而不依赖于它们的数值,它们被广泛用于标识和处理文本,文档以及其他形状,例如线条和框。
以下代码将演示如何创建阈值为0.5的二进制图像。首先加载图像并将简单的数学转换应用于图像的灰度版本:
using Images, ImageView, ImageMorphology
load an image
img = load(“sample-images/bird-3183441_640.jpg”);
convert image to grayscale and binarise the only channel
1. 将图像转换为灰度
2. 将所有大于0.5的值转换为true,而小于0.5的所有值转换为false
3. 通过将1乘以结果数组,它将true和false值转换为1或0
img_binary = 1 * (Gray.(img) .> 0.5);
将转换为二值版本的图像与原始图像放在一起进行对比:
使用restrict函数缩放原始图像和二值图像
img = restrict(img)
img_binary = restrict(RGB.(Gray.(img_binary)))
使用size标识图像缩放版本的宽度
img_width = size(img, 2)
使用填充功能创建新图像,其宽度是原来的两倍
combined_image = fill(RGB4{Float32}(0.,0.,0.), size(img) .* (1, 2))
将图像放在一起进行对比
combined_image[:, 1:img_width] = img
combined_image[:, img_width+1:img_width*2] = img_binary
imshow(combined_image)
形态学运算也可以应用于灰度图像。
数学形态学是一组与图像的形状或特征有关的非线性运算和技术。图像形态学有两个基本要素:
-
二进制或灰度图像
-
结构元素
已经讨论了有关图像和配色方案的先决条件,但是结构元素是新的。结构元素通常是一个3x3二值块,可在图像上滑动并更新它。滑动结构元素可以实现两个基本操作:
-
图像侵蚀:从对象边界去除像素
-
图像膨胀:将像素添加到图像中对象的边界
从ImageMorphology
包进行的侵蚀和膨胀仅支持3x3结构元素。 3×3正方形是用于形态学运算的最流行的结构元素。较大的结构元素会产生更极端的侵蚀或膨胀效果,通常通过多次重复3x3结构元素运算获得相似的结果。
图像侵蚀
图像侵蚀是数学形态学领域的两个基本运算符之一。侵蚀是缩小图像前景或1值对象的过程。它可以平滑对象边界并去除小物体。
为了了解图像侵蚀的工作方式,首先在包含白噪声的简单图像上进行尝试,然后继续比较将其应用于照片的二值和灰度版本时的结果。
使用侵蚀分离物体
对于此任务,使用如下图片。它具有许多不同的连接图形,并且两侧都添加了噪声:
从加载图像并将其转换为灰度开始:
using Images, ImageView, ImageMorphology
geom_img = load(“pictures/geometrical-figures-and-noise.jpg”);
geom_img_binary = Gray.(Gray.(geom_img) .> 0.5);#keeps white objects white
接下来,应用erode函数来进行转换:
geom_img_binary_e = erode(geom_img_binary)
imshow(geom_img_binary_e)
以下结果图像将显示在屏幕上。能够看到噪音大大减少并且对象分离得到改善:
一次运行侵蚀功能并不能完全消除噪音,它使对象保持连接。运行erode函数数次查看结果:
geom_img_binary_e = erode(erode(geom_img_binary_e))
geom_img_binary_e = erode(erode(geom_img_binary_e))
imshow(geom_img_binary_e)
准备用于文本识别的图像
将图像侵蚀应用于真实照片,将车牌上的字母和数字与其余内容分开:
首先加载图像,然后创建一个二进制版本,然后多次应用erode函数并比较结果:
using Images, ImageView, ImageMorphology
carplate_img = load(“pictures/caribbean-2726429_640.jpg”)
carplate_img_binary = Gray.(Gray.(carplate_img) .< 0.5);
converts black objects to white and vice-versa
carplate_img_binary_e = erode(carplate_img_binary)
imshow(carplate_img_binary)
carplate_img_binary_e = erode(erode(carplate_img_binary_e))
imshow(carplate_img_binary_e)
三次侵蚀图像的结果。图像上没有其他文字,并且车牌清晰。可以用于文本识别任务:
图像膨胀
膨胀是形态学领域中的另一个基本操作。图像膨胀是逐渐扩大前景像素区域的边界或1值对象的大小的过程。因此,前景像素的区域会增大尺寸,平滑对象边界并封闭对象之间的孔和间隙。
合并几乎连接的对象
同样使用在使用侵蚀分离物体
部分中使用的图片。它具有许多不同的连接图形,并且两侧都添加了噪声:
首先删除几何对象之间的间隙和孔,并使用以下代码比较一次运行膨胀函数一次和三次的情况:
using Images, ImageView, ImageMorphology
geom_img = load(“pictures/geometrical-figures-and-noise.jpg”);
geom_img_binary = Gray.(1 * Gray.(geom_img) .> 0.5);
geom_img_binary_d = dilate(geom_img_binary)
imshow(geom_img_binary_d)
geom_img_binary_d = dilate(dilate(geom_img_binary_d))
imshow(geom_img_binary_d)
可以看到三次膨胀后图形之间的重叠增加了很多,并且右侧的噪点变成了单个对象。
突出显示细节
尝试将膨胀函数应用于带有车牌的图像。如果侵蚀功能已将车牌字母和数字分开,则膨胀将扩展每个对象的边界:
using Images, ImageView, ImageMorphology
carplate_img = load(“pictures/caribbean-2726429_640.jpg”)
carplate_img_binary = Gray.(Gray.(carplate_img) .< 0.5)
carplate_img_binary_d = dilate(carplate_img_binary)
imshow(carplate_img_binary_d)
最后
不知道你们用的什么环境,我一般都是用的Python3.6环境和pycharm解释器,没有软件,或者没有资料,没人解答问题,都可以免费领取(包括今天的代码),过几天我还会做个视频教程出来,有需要也可以领取~
给大家准备的学习资料包括但不限于:
Python 环境、pycharm编辑器/永久激活/翻译插件
python 零基础视频教程
Python 界面开发实战教程
Python 爬虫实战教程
Python 数据分析实战教程
python 游戏开发实战教程
Python 电子书100本
Python 学习路线规划
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
如果你需要这些资料,可以添加V无偿获取:hxbc188 (备注666)
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
VpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2ZlaTM0Nzc5NTc5MA==,size_16,color_FFFFFF,t_70)
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
如果你需要这些资料,可以添加V无偿获取:hxbc188 (备注666)
[外链图片转存中…(img-xekBNRHN-1713860436156)]
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!