當前位置:首頁 » 編程語言 » python均值濾波

python均值濾波

發布時間: 2022-07-13 00:17:59

『壹』 大家誰有Average Filtering 均值濾波和Bilateral Filtering 雙邊濾波的源代碼我想參考一下,謝謝了

I=imread('f:\123.jpg');%讀取圖像 J=imnoise(I,'gaussian',0,0.005);%加入均值為0,方差為0.005的高斯雜訊 subplot(2,3,1);imshow(I); title('原始圖像'); subplot(2,3,2); imshow(J); title('加入高斯雜訊之後的圖像'); %採用MATLAB中的函數filter2對受雜訊干擾的圖像進行均值濾波 K1=filter2(fspecial('average',3),J)/255; %模板尺寸為3 K2=filter2(fspecial('average',5),J)/255;% 模板尺寸為5 K3=filter2(fspecial('average',7),J)/255; %模板尺寸為7 K4= filter2(fspecial('average',9),J)/255; %模板尺寸為9 subplot(2,3,3);imshow(K1); title('改進後的圖像1'); subplot(2,3,4); imshow(K2); title('改進後的圖像2'); subplot(2,3,5);imshow(K3); title('改進後的圖像3'); subplot(2,3,6);imshow(K4); title('改進後的圖像4');

『貳』 均值濾波怎麼算的

均值濾波是典型的線性濾波演算法,它是指在圖像上對目標像素給一個模板,該模板包括了其周圍的臨近像素(以目標象素為中心的周圍8個像素,構成一個濾波模板,即去掉目標像素本身),再用模板中的全體像素的平均值來代替原來像素值。均值濾波是典型的線性濾波演算法,它是指在圖像上對目標像素給一個模板,該模板包括了其周圍的臨近像素(以目標像素為中心的周圍8個像素,構成一個濾波模板,即去掉目標像素本身)。再用模板中的全體像素的平均值來代替原來像素值。均值濾波也稱為線性濾波,其採用的主要方法為鄰域平均法。線性濾波的基本原理是用均值代替原圖像中的各個像素值,即對待處理的當前像素點(x,y),選擇一個模板,該模板由其近鄰的若干像素組成,求模板中所有像素的均值,再把該均值賦予當前像素點(x,y),作為處理後圖像在該點上的灰度個g(x,y),即個g(x,y)=1/m ∑f(x,y) m為該模板中包含當前像素在內的像素總個數。均值濾波本身存在著固有的缺陷,即它不能很好地保護圖像細節,在圖像去噪的同時也破壞了圖像的細節部分,從而使圖像變得模糊,不能很好地去除雜訊點。

『叄』 python 中一維數據中值濾波函數,在matlab中有 medfilt1函數,Python中有嗎,只找到了圖像2維的,

有的,在numpy包中

importnumpyasnp
dat=[1,3,5,6,7,2,4]
med=np.median(dat)#med=4.0

『肆』 均值濾波 :filter2(fspecial('average',3),I)/255,為什麼要除以255啊不除可以嗎啊

沒看到函數,不知道函數的作用,但這個除以255應該是保留高8位吧。

『伍』 均值濾波的介紹

均值濾波是典型的線性濾波演算法,它是指在圖像上對目標像素給一個模板,該模板包括了其周圍的臨近像素(以目標象素為中心的周圍8個像素,構成一個濾波模板,即去掉目標像素本身),再用模板中的全體像素的平均值來代替原來像素值。

『陸』 python pil 怎麼去掉驗證碼線條

一、驗證碼識別的概念

機器識別圖片主要的三個步驟為消去背景、切割字元、識別字元。而現有的字元驗證碼也針對這三個方面來設計強壯的驗證碼。

以下簡圖幫助大家理解驗證碼識別的流程:

二、處理流程

其中最為關鍵的就是好圖像處理這一步了。圖像處理功能模塊包括圖像的灰度化、二值化、離散雜訊點的去除、傾斜度校正、字元的切割、圖像的歸一化等圖像處理技術 。

1、 圖像的灰度化
由於 256 色的點陣圖的調色板內容比較復雜,使得圖像處理的許多演算法都沒有辦法展開,因此有必要對它進行灰度處理。所謂灰度圖像就是圖像的每一個像素的 R、G、B 分量的值是相等的。彩色圖像的每個像素的 R、G、B 值是不相同的,所以顯示出紅綠藍等各種顏色。灰度圖像沒有這些顏色差異,有的只是亮度上的不同。灰度值大的像素點比較亮(像素值最大為 255,為白色),反之比較暗(像素值最小為 0,為黑色)。圖像灰度化有各種不同的演算法,比較直接的一種就是給像素的 RGB 值各自一個加權系數,然後求和;同時還要對調色板表項進行相應的處理。

2、 圖像的二值化
要注意的是,最後得到的結果一定要歸一到 0-255 之內。因為這是每個位元組表示
圖像數據的極限。

3、 去噪
圖像可能在生成、傳輸或者採集過程中夾帶了雜訊,去雜訊是圖像處理中常用的手法。通常去雜訊用濾波的方法,比如中值濾波、均值濾波。但是那樣的演算法不適合用在處理字元這樣目標狹長的圖像中,因為在濾波的過程中很有可能會去掉字元本身的像素。

一個採用的是去除雜點的方法來進行去雜訊處理的。具體演算法如下:掃描整個圖像,當發現一個黑色點的時候,就考察和該黑色點間接或者直接相連接的黑色點的個數有多少,如果大於一定的值,那就說明該點不是離散點,否則就是離散點,把它去掉。在考察相連的黑色點的時候用的是遞歸的方法。此處,我簡單的用python實現了,大家可以參考以下。

#coding=utf-8"""
creat time:2015.09.14
"""import cv2import numpy as npfrom matplotlib import pyplot as pltfrom PIL import Image,ImageEnhance,ImageFilter

img_name = '2+.png'#去除干擾線im = Image.open(img_name)#圖像二值化enhancer = ImageEnhance.Contrast(im)
im = enhancer.enhance(2)
im = im.convert('1')
data = im.getdata()
w,h = im.size#im.show()black_point = 0for x in xrange(1,w-1): for y in xrange(1,h-1):
mid_pixel = data[w*y+x] #中央像素點像素值
if mid_pixel == 0: #找出上下左右四個方向像素點像素值
top_pixel = data[w*(y-1)+x]
left_pixel = data[w*y+(x-1)]
down_pixel = data[w*(y+1)+x]
right_pixel = data[w*y+(x+1)] #判斷上下左右的黑色像素點總個數
if top_pixel == 0:
black_point += 1
if left_pixel == 0:
black_point += 1
if down_pixel == 0:
black_point += 1
if right_pixel == 0:
black_point += 1
if black_point >= 3:
im.putpixel((x,y),0) #print black_point
black_point = 0im.show()041424344

原驗證碼:

4、分割
圖像中一般會含有多個數字,識別的時候只能根據每個字元的特徵來進行判斷,所以還要進行字元切割的工作。這一步工作就是把圖像中的字元獨立的切割出來。

具體的演算法如下:

第一步,先自下而上對圖像進行逐行掃描直至遇到第一個黑色的像素點。記錄下來。然後再自上而下對圖像進行逐行掃描直至找到第一個黑色像素,這樣就找到圖像大致的高度范圍。

第二步,在這個高度范圍之內再自左向右逐列進行掃描,遇到第一個黑色像素時認為是字元切割的起始位置,然後繼續掃描,直至遇到有一列中沒有黑色像素,則認為這個字元切割結束,然後繼續掃描,按照上述的方法一直掃描直至圖像的最右端。這樣就得到了每個字元的比較精確寬度范圍。

第三步,在已知的每個字元比較精確的寬度范圍內,按照第一步的方法,分別進行自上而下和自下而上的逐行掃描來獲取每個字元精確的高度范圍。

5、 圖像的歸一化
因為採集的圖像中字元大小有可能存在較大的差異,或者是經過切割後的字元尺寸不統一,而相對來說,統一尺寸的字元識別的標准性更強,准確率自然也更高,歸一化圖像就是要把原來各不相同的字元統一到同一尺寸,在系統實現中是統一到同一高度,然後根據高度來調整字元的寬度。具體演算法如下:先得到原來字元的高度,跟系統要求的高度做比較,得出要變換的系數,然後根據得到的系數求得變換後應有得寬度。在得到寬度和高度之後,把新圖像裡面的點按照插值的方法映射到原圖像中。

不少人認為把每個字元圖像歸一化為 5×9 像素的二值圖像是最理想的,因為圖像的尺寸越小,識別速度就越高,網路訓練也越快。而實際上,相對於要識別的字元圖像, 5×9 像素圖太小了。歸一化後,圖像信息丟失了很多,這時進行圖像識別,准確率不高。實驗證明,將字元圖像歸一化為 10×18 像素的二值圖像是現實中是比較理想的,達到了識別速度快和識別准確率高的較好的平衡點。

三、識別

圖像識別包括特徵提取、樣本訓練和識別三大塊內容。

驗證碼識別其中最為關鍵的就是去噪和分割,這對你的訓練和識別的精度都有著很大的影響。這里只講了大致的流程,其中每個細節都有很多工作要做,這里碼字也很難講清楚,大家可以以這個流程為主線,一步步的實現,最終也就能完成你的需求。

『柒』 python的pillow庫怎麼處理灰度圖像

Pillow是Python里的圖像處理庫(PIL:Python Image Library),提供了了廣泛的文件格式支持,強大的圖像處理能力,主要包括圖像儲存、圖像顯示、格式轉換以及基本的圖像處理操作等。
1)使用 Image 類
PIL最重要的類是 Image class, 你可以通過多種方法創建這個類的實例;你可以從文件載入圖像,或者處理其他圖像, 或者從 scratch 創建。
要從文件載入圖像,可以使用open( )函數,在Image模塊中:
>>> from PIL import Image
>>> im = Image.open("E:/photoshop/1.jpg")

載入成功後,將返回一個Image對象,可以通過使用示例屬性查看文件內容:

>>> print(im.format, im.size, im.mode)
('JPEG', (600, 351), 'RGB')
>>>

format 這個屬性標識了圖像來源。如果圖像不是從文件讀取它的值就是None。size屬性是一個二元tuple,包含width和height(寬度和高度,單位都是px)。 mode 屬性定義了圖像bands的數量和名稱,以及像素類型和深度。常見的modes 有 「L」 (luminance) 表示灰度圖像, 「RGB」 表示真彩色圖像, and 「CMYK」 表示出版圖像。
如果文件打開錯誤,返回 IOError 錯誤。
只要你有了 Image 類的實例,你就可以通過類的方法處理圖像。比如,下列方法可以顯示圖像:
im.show()

2)讀寫圖像
PIL 模塊支持大量圖片格式。使用在 Image 模塊的 open() 函數從磁碟讀取文件。你不需要知道文件格式就能打開它,這個庫能夠根據文件內容自動確定文件格式。要保存文件,使用 Image 類的 save() 方法。保存文件的時候文件名變得重要了。除非你指定格式,否則這個庫將會以文件名的擴展名作為格式保存。
載入文件,並轉化為png格式:

"Python Image Library Test"
from PIL import Image
import os
import sys

for infile in sys.argv[1:]:
f,e = os.path.splitext(infile)
outfile = f +".png"
if infile != outfile:
try:
Image.open(infile).save(outfile)
except IOError:
print("Cannot convert", infile)

save() 方法的第二個參數可以指定文件格式。
3)創建縮略圖
縮略圖是網路開發或圖像軟體預覽常用的一種基本技術,使用Python的Pillow圖像庫可以很方便的建立縮略圖,如下:
# create thumbnail
size = (128,128)
for infile in glob.glob("E:/photoshop/*.jpg"):
f, ext = os.path.splitext(infile)
img = Image.open(infile)
img.thumbnail(size,Image.ANTIALIAS)
img.save(f+".thumbnail","JPEG")

上段代碼對photoshop下的jpg圖像文件全部創建縮略圖,並保存,glob模塊是一種智能化的文件名匹配技術,在批圖像處理中經常會用到。
注意:Pillow庫不會直接解碼或者載入圖像柵格數據。當你打開一個文件,只會讀取文件頭信息用來確定格式,顏色模式,大小等等,文件的剩餘部分不會主動處理。這意味著打開一個圖像文件的操作十分快速,跟圖片大小和壓縮方式無關。
4)圖像的剪切、粘貼與合並操作
Image 類包含的方法允許你操作圖像部分選區,PIL.Image.Image.crop 方法獲取圖像的一個子矩形選區,如:

# crop, paste and merge
im = Image.open("E:/photoshop/lena.jpg")
box = (100,100,300,300)
region = im.crop(box)

矩形選區有一個4元元組定義,分別表示左、上、右、下的坐標。這個庫以左上角為坐標原點,單位是px,所以上訴代碼復制了一個 200×200 pixels 的矩形選區。這個選區現在可以被處理並且粘貼到原圖。

region = region.transpose(Image.ROTATE_180)
im.paste(region, box)

當你粘貼矩形選區的時候必須保證尺寸一致。此外,矩形選區不能在圖像外。然而你不必保證矩形選區和原圖的顏色模式一致,因為矩形選區會被自動轉換顏色。
5)分離和合並顏色通道
對於多通道圖像,有時候在處理時希望能夠分別對每個通道處理,處理完成後重新合成多通道,在Pillow中,很簡單,如下:

r,g,b = im.split()
im = Image.merge("RGB", (r,g,b))

對於split( )函數,如果是單通道的,則返回其本身,否則,返回各個通道。
6)幾何變換
對圖像進行幾何變換是一種基本處理,在Pillow中包括resize( )和rotate( ),如用法如下:

out = im.resize((128,128))
out = im.rotate(45) # degree conter-clockwise

其中,resize( )函數的參數是一個新圖像大小的元祖,而rotate( )則需要輸入順時針的旋轉角度。在Pillow中,對於一些常見的旋轉作了專門的定義:

out = im.transpose(Image.FLIP_LEFT_RIGHT)
out = im.transpose(Image.FLIP_TOP_BOTTOM)
out = im.transpose(Image.ROTATE_90)
out = im.transpose(Image.ROTATE_180)
out = im.transpose(Image.ROTATE_270)

7)顏色空間變換
在處理圖像時,根據需要進行顏色空間的轉換,如將彩色轉換為灰度:

cmyk = im.convert("CMYK")
gray = im.convert("L")

8)圖像濾波
圖像濾波在ImageFilter 模塊中,在該模塊中,預先定義了很多增強濾波器,可以通過filter( )函數使用,預定義濾波器包括:
BLUR、CONTOUR、DETAIL、EDGE_ENHANCE、EDGE_ENHANCE_MORE、EMBOSS、FIND_EDGES、SMOOTH、SMOOTH_MORE、SHARPEN。其中BLUR就是均值濾波,CONTOUR找輪廓,FIND_EDGES邊緣檢測,使用該模塊時,需先導入,使用方法如下:

from PIL import ImageFilter

imgF = Image.open("E:/photoshop/lena.jpg")
outF = imgF.filter(ImageFilter.DETAIL)
conF = imgF.filter(ImageFilter.CONTOUR)
edgeF = imgF.filter(ImageFilter.FIND_EDGES)
imgF.show()
outF.show()
conF.show()
edgeF.show()

除此以外,ImageFilter模塊還包括一些擴展性強的濾波器:
class PIL.ImageFilter.GaussianBlur(radius=2)

熱點內容
安卓手機軟體用什麼編程語言寫 發布:2024-05-06 14:30:07 瀏覽:657
des解密python 發布:2024-05-06 14:30:06 瀏覽:684
n的階乘演算法 發布:2024-05-06 14:29:57 瀏覽:552
安卓手機為什麼停服 發布:2024-05-06 14:29:08 瀏覽:93
電腦伺服器不運行是怎麼回事 發布:2024-05-06 14:20:28 瀏覽:791
肥皂板解壓視頻大全 發布:2024-05-06 14:20:27 瀏覽:260
ps4各個伺服器有什麼區別 發布:2024-05-06 14:10:38 瀏覽:485
手機上怎麼玩韓國伺服器游戲 發布:2024-05-06 14:10:20 瀏覽:59
頻繁的解壓縮 發布:2024-05-06 14:09:30 瀏覽:821
怎麼在紅帽上裝c語言編譯器 發布:2024-05-06 13:58:38 瀏覽:508