999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

Python在數字圖像處理課程教學中的應用

2018-01-03 22:09:28李振江
求知導刊 2017年24期
關鍵詞:語言方法課程

李振江

摘 要:為了更好地開展數字圖像處理課程的教學,教師應在分析課程實際需求以及語言特點的基礎上,將Python選為課程實踐語言,在引入Python數字圖像處理基本知識的基礎上,對一些最基本的圖像處理算法進行實現。文章就此對Python在數字圖像處理課程教學中的應用進行了分析。

一、引言

數字圖像處理是一門綜合性多領域交叉的學科,經過多年的發展,已經在機器視覺、自動控制、虛擬現實等領域取得了長足的發展。很多院校都在本科階段開設了相關課程,其教學目的在于讓學生了解數字圖像處理的一般概念,掌握該領域最基本的算法原理以及實現方法,為進一步的學習打下基礎。

在該課程的教學實踐中,教師選擇一門合適的語言工具進行授課尤為重要。語言工具的選擇要注意這樣幾個問題;首先,語言要易于上手,這樣才能讓學生較快進入圖像處理知識的學習而不是在一些編程細節上占用過多時間;其次,選擇的語言要與當前新技術有較好的結合,這樣在學習過程中才有助于開拓學生視野;最后,語言的擴展性要強,便于學生日后快速在其他相關領域展開學習應用。

二、Python語言的特點

1.簡單易用

Python是一種面向對象的解釋型語言,在其豐富外部庫的支持下,實現數字圖像處理的基本算法,通常都只需要不多的幾行代碼,非常方便。一方面,編程能力較低的本科學生使用Python語言也可以對課程內容進行實現;另一方面,在具體實踐中能讓學生從煩瑣的底層邏輯(如IO操作、顯示等)中擺脫出來,專注于圖像處理的方法層面。從培養學生學習興趣的角度講,與早期選擇使用的C++等語言相比,大部分學生都能使用Python完成基本算法的實現并將結果圖像進行顯示,這在初期對學生的學習興趣是一種極大的鼓舞。

2.應用廣泛

Python自20世紀90年代初誕生到現在,在各個領域都得到了廣泛的應用。最初它的應用較為局限,大都以系統管理和web編程這兩個方面為主。在該語言誕生之初,其一個核心的思想就是開放和開源,在眾多開源社區的支持下,自2004年以來,Python的使用率有一個明顯的增長。2017年IEEE Spectrum發布了第四屆頂級編程語言交互排行榜,Python高居排行榜榜首,說明時下Python語言又成為業界應用的熱點。尤其是在科學計算領域,隨著深度學習技術引發的人工智能新一輪熱潮,眾多的代碼都是基于Python語言進行發布,給這一領域傳統的霸主MATLAB帶了來巨大的挑戰。

3.擴展性強

Python語言功能強大,有“膠水語言”的別稱,能夠方便地對其他語言實現的功能模塊進行調用。對于某一具體問題,可以使用Python搭建整體框架,然后在不同的位置調用已有的成熟模塊進行實現,是一種快速的軟件實現方法。同時Python語言的擴展庫數目繁多,在很多不同的應用領域,都有相應的庫與之配合,如數學工具庫NumPy、圖形庫Tkinter或者PIL、多媒體封裝庫PyOpenGL、數據庫接口MySQLdb、機器學習庫scikit-learn等。

結合數字圖像處理課程本身的需求以及Python語言的自身特點,選擇Python作為課程講授的語言是較為符合實際需求的。同時,為了便于以后在數字圖像處理方面的進一步學習,使用了OpenCV的Python庫作為主要的圖像處理工具,同時使用NumPy作為基礎的數學庫。

三、Python數字圖像處理基礎

1.Python的安裝和庫的導入

有兩種方式對Python進行安裝,使用第一種方式,在官網下載相應操作系統的安裝包對語言本體進行安裝,之后根據應用的需求下載相應的庫,手工對其進行安裝配置。第二種方式則是直接選用第三方的集成安裝管理環境對其進行安裝。由于Python功能庫數目較多,且很多庫與庫之間還存在依賴關系,對于初學者建議使用第二種方式進行安裝,推薦使用的安裝工具為Anaconda,該工具可以一鍵式安裝Python并對功能庫進行集成化管理。在熟悉使用后,還可以使用第一種方式重新安裝一次,以便進一步加深對Python開發中使用到各種工具以及庫的理解。預裝好的Anaconda中沒有OpenCV,還需要在Anaconda的庫管理工具中對OpenCV進行安裝。安裝完成后,在代碼中使用import命令導入相應的庫,就可以方便地使用庫的相關功能。

2.圖像的讀取、顯示以及保存

載入、顯示并保存圖像是數字圖像處理的最基本操作,對于常見的各種圖像格式,Python的OpenCV庫都能對其進行較好的支持,其代碼如下所示:

import cv2

img = cv2.imread('d:/1.bmp')

cv2.imshow('title', img)

cv2.waitKey(0)

cv2.destroyAllWindows()

cv2.imwrite('d:/1.jpg',img)

第一行代碼為引入OpenCV庫,后空一行,開始對圖像進行讀取以及顯示。第三行中,使用imread方法讀取了一幅圖像,將該圖像賦值給變量img。第四行調用imshow方法繪制窗口并顯示圖像。第五行是對窗口的阻塞式顯示,第六行銷毀了所有窗口。第七行調用imwrite方法保存圖像,這里的文件后綴由原始的bmp變為jpg,該方法可以根據文件后綴自動判別所需要保存的文件類型。

3.圖像的像素操作

圖像基本的像素操作包括像素值的讀取與寫入,在OpenCV中,一幅圖像被看作一個數值矩陣,矩陣中點的值就是對應位置像素的值,所有和矩陣相關的操作都是調用NumPy庫來進行處理的,其代碼如下所示:

img = cv2.imread('d:/1.bmp')endprint

pixel = img[1,1,0]

print (pixel)

pixel = 10

img[1,1,0] = 10

print (img[1,1,0])

首先讀取一幅圖像,之后使用方括號索引對指定位置的像素進行讀取,在上述代碼中,索引位置為“[1,1,0]”,表示要讀取的像素坐標為“1,1”,顏色通道為第0號通道。之后將數值10重新賦給這個坐標位置,同時將數值進行控制臺輸出,以便觀察變化。除了以單個的方式對像素進行讀寫外,還可以以某一坐標范圍對像素進行批量處理。

四、基本的圖像處理算法

1.直方圖處理

灰度直方圖是圖像不同灰度級出現概率的統計,通過直方圖可以非常直觀地了解一幅圖像的明暗程度以及色彩均勻程度,是多種空間域處理技術的基礎。我們可以調用calcHist方法來計算一幅圖像的灰度直方圖,并調用matplotlib庫的相關方法對其進行顯示。同時,對于灰度級分布不均勻的圖像,可以使用直方圖均衡化方法對圖像進行增強,調用equalizeHist方法即可實現該操作。相關代碼如下:

import cv2

import matplotlib.pyplot as plt

img = cv2.imread('d:/1.jpg',0) # 直接讀為灰度圖像

hist_cv = cv2.calcHist([img],[0],None,[256],[0,256]) # 計算灰度直方圖

plt.plot(hist_cv) # 使用matplotlib顯示直方圖

res = cv2.equalizeHist(img) # 對原始圖像進行直方圖均衡化計算

plt.subplot(121),plt.imshow(img,'gray') # 對比顯示均衡化前后的圖像

plt.subplot(122),plt.imshow(res,'gray')

plt.show

2.空間濾波

空間濾波是由一個鄰域模板對原始圖像進行卷積操作,將卷積的結果代替該位置的像素,以達到某種處理的效果。最常見的濾波方式有兩種,一種是空間平滑濾波,常用于模糊處理和降噪處理;還有一種是空間銳化濾波,常用于突出邊緣操作。以下代碼演示了使用均值濾波器進行平滑濾波以及使用Sobel濾波器進行銳化濾波。

import cv2

img = cv2.imread(d:/1.jpg',0) # 直接讀為灰度圖像

blur = cv2.blur(img,(5,5)) # 使用5*5的模板對圖像進行中值濾波

sobelx = cv2.Sobel(img, cv2.CV_64F, 1, 0) # 分別沿著x和y方向計算sobel圖像

sobely = cv2.Sobel(img, cv2.CV_64F, 0, 1)

sobelx = numpy.uint8(numpy.absolute(sobelx)) # 將計算得到的圖像轉換為uint8類型

sobely = numpy.uint8(numpy.absolute(sobely))

sobelcombine = cv2.bitwise_or(sobelx, sobely) # 合并兩個方向的圖像 得到最終的濾波結果

3.圖像分割

圖像分割是將圖像的前景或感興趣區域從背景中提取出來的一種技術手段,是從圖像中提取相關語義信息的必要步驟。目前圖像分割的技術手段多種多樣,最基本的圖像分割即圖像的二值化處理,將整個圖像劃分為前景和背景兩個部分。我們可以使用手工閾值方法對圖像進行二值化處理,還可以使用自動閾值方法對其二值化。以下代碼演示了使用手工閾值方法以及經典的自動閾值方法Otsu對圖像進行二值化分割。

import cv2

img = cv2.imread('d:/dd.jpg', 0) # 讀取灰度圖像

ret1, bwimg1 = cv2.threshold(img,127,255,cv2.THRESH_BINARY) # 手工閾值進行二值化

ret2,bwimg2 = cv2.threshold(img,0,255,cv2.THRESH_BINARY+cv2.THRESH_OTSU) # Otsu二值化

五、小結

在數字圖像處理課程的教學過程中,選擇Python作為實踐教學使用的程序語言,一方面,降低了數字圖像處理編程的學習門檻,提高了學生的學習積極性;另一方面,該語言與目前熱門技術結合緊密,擴展性強,為以后的相關學習打下基礎。本文簡單介紹了該語言在教學過程中的基本應用手段,如何在此基礎上進一步進行學習還有待研究。

參考文獻:

[1]周海芳.“數字圖像處理”課程研討式教學[J].計算機教育,2010(24).

[2]李國軍.數字圖像處理的一種新方法[J].鞍山師范學院學報,2016(18).endprint

猜你喜歡
語言方法課程
數字圖像處理課程混合式教學改革與探索
軟件設計與開發實踐課程探索與實踐
計算機教育(2020年5期)2020-07-24 08:53:38
語言是刀
文苑(2020年4期)2020-05-30 12:35:30
為什么要學習HAA課程?
讓語言描寫搖曳多姿
累積動態分析下的同聲傳譯語言壓縮
可能是方法不對
用對方法才能瘦
Coco薇(2016年2期)2016-03-22 02:42:52
四大方法 教你不再“坐以待病”!
Coco薇(2015年1期)2015-08-13 02:47:34
我有我語言
主站蜘蛛池模板: 色哟哟国产精品| 亚洲中文字幕97久久精品少妇| 97视频在线观看免费视频| 亚洲精品在线91| 黄色网站在线观看无码| 久久亚洲国产视频| 亚洲无码电影| 亚洲国产日韩一区| 超清无码一区二区三区| 亚洲人成色77777在线观看| 暴力调教一区二区三区| 小说区 亚洲 自拍 另类| 试看120秒男女啪啪免费| 91青青草视频| 国产香蕉在线视频| 欧美一道本| 97在线国产视频| 亚洲男人的天堂久久香蕉网| 久久久久夜色精品波多野结衣| 日本亚洲欧美在线| 国产一级精品毛片基地| 欧美一级黄色影院| 性视频久久| 精品国产免费观看| 亚洲无码A视频在线| 国产91透明丝袜美腿在线| 国产又黄又硬又粗| 精品视频第一页| 国产成人夜色91| 国产乱子精品一区二区在线观看| 一级片一区| 色综合日本| 伊人久久婷婷五月综合97色| 日韩无码黄色网站| 欧美成人区| 午夜国产精品视频黄 | 色婷婷啪啪| 国产麻豆精品在线观看| 全部免费特黄特色大片视频| 99久久亚洲综合精品TS| 亚洲欧美日韩成人在线| 五月婷婷激情四射| 国产午夜人做人免费视频| 黄色网站在线观看无码| 免费人成视网站在线不卡| 国产91在线|日本| 国产成人综合网| 亚洲一区二区日韩欧美gif| 亚洲电影天堂在线国语对白| 亚欧美国产综合| 自拍欧美亚洲| 麻豆国产在线不卡一区二区| 热伊人99re久久精品最新地| 色天堂无毒不卡| 欧美色视频日本| 一区二区三区成人| 欧美精品高清| 欧美成在线视频| 97综合久久| 丁香婷婷激情网| 五月综合色婷婷| 亚洲AⅤ波多系列中文字幕| 色综合色国产热无码一| 激情午夜婷婷| 日韩中文字幕亚洲无线码| 农村乱人伦一区二区| 国产精品开放后亚洲| 国产九九精品视频| 国产资源免费观看| 国产高清在线观看91精品| 先锋资源久久| 亚洲第一在线播放| 啪啪啪亚洲无码| 欧美日韩中文字幕在线| 久久综合亚洲鲁鲁九月天| 久久a级片| 欧美日韩中文字幕在线| 欧洲熟妇精品视频| 欧美日韩成人在线观看| 亚洲色图在线观看| 女人18毛片水真多国产| 国产尤物在线播放|