日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

VTK修炼之道36:图像平滑_均值滤波器

發布時間:2025/3/15 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 VTK修炼之道36:图像平滑_均值滤波器 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.圖像平滑

圖像平滑常用于圖像的預處理中,如計算梯度時先對圖像進行平滑處理,可以減少噪聲對梯度的影響。圖像平滑一般是通過模板卷積運算實現。模板可以看做是一個大小為nxn的小圖像,例如3x3,5x5等等,模板的每個像素都對應一個系數值。模板卷積運算的過程是首先將模板中心依次與圖像每個像素重合,通過模板各個系數與圖像對應像素相乘來計算模板對應像素的加權平均值,最后將運算結果賦給圖像中模板中心對應的像素。

2.均值濾波

均值濾波是一種經常用到的平滑方法,其對應的模板各個像素的值為1。在VTK中沒有直接實現均值濾波的類,但是我們可以通過圖像卷積運算來實現。卷積運算通過vtkImageConvolve類實現。通過vtkImageConvolve類,只需要設置相應的卷積模板,便可以實現多種空域圖像濾波。

下面代碼說明了怎樣使用vtkImageConvolve類來實現圖像的均值濾波:

#include <vtkAutoInit.h> VTK_MODULE_INIT(vtkRenderingOpenGL);#include <vtkSmartPointer.h> #include <vtkJPEGReader.h> #include <vtkImageCast.h> //圖像數據類型轉換為計算類型 #include <vtkImageData.h> #include <vtkImageConvolve.h> //圖像卷積運行 #include <vtkImageShiftScale.h> //設置像素值范圍 //#include <vtkImageMandelbrotSource.h> #include <vtkImageActor.h> #include <vtkRenderer.h> #include <vtkImageMandelbrotSource.h> #include <vtkRenderWindow.h> #include <vtkRenderWindowInteractor.h> #include <vtkInteractorStyleImage.h>int main() {vtkSmartPointer<vtkJPEGReader> reader =vtkSmartPointer<vtkJPEGReader>::New();reader->SetFileName("lena.jpg");reader->Update();vtkSmartPointer<vtkImageCast> originalCastFilter =vtkSmartPointer<vtkImageCast>::New();originalCastFilter->SetInputConnection(reader->GetOutputPort()); //建管線originalCastFilter->SetOutputScalarTypeToFloat(); //設置屬性originalCastFilter->Update();vtkSmartPointer<vtkImageConvolve> convolveFilter =vtkSmartPointer<vtkImageConvolve>::New();convolveFilter->SetInputConnection(originalCastFilter->GetOutputPort()); //建管線double kernel[25] = { 0.04, 0.04, 0.04, 0.04, 0.04,0.04, 0.04, 0.04, 0.04, 0.04,0.04, 0.04, 0.04, 0.04, 0.04,0.04, 0.04, 0.04, 0.04, 0.04,0.04, 0.04, 0.04, 0.04, 0.04 };convolveFilter->SetKernel5x5(kernel);convolveFilter->Update();vtkSmartPointer<vtkImageCast> convCastFilter =vtkSmartPointer<vtkImageCast>::New();convCastFilter->SetInputData(convolveFilter->GetOutput());convCastFilter->SetOutputScalarTypeToUnsignedChar(); //轉換為圖像數據convCastFilter->Update();///vtkSmartPointer<vtkImageActor> originalActor =vtkSmartPointer<vtkImageActor>::New();originalActor->SetInputData(reader->GetOutput());vtkSmartPointer<vtkImageActor> convolvedActor =vtkSmartPointer<vtkImageActor>::New();convolvedActor->SetInputData(convCastFilter->GetOutput());double leftViewport[4] = { 0.0, 0.0, 0.5, 1.0 };double rightViewport[4] = { 0.5, 0.0, 1.0, 1.0 };vtkSmartPointer<vtkRenderer> originalRenderer =vtkSmartPointer<vtkRenderer>::New();originalRenderer->SetViewport(leftViewport);originalRenderer->AddActor(originalActor);originalRenderer->SetBackground(1.0, 1.0, 1.0);originalRenderer->ResetCamera();vtkSmartPointer<vtkRenderer> convolvedRenderer =vtkSmartPointer<vtkRenderer>::New();convolvedRenderer->SetViewport(rightViewport);convolvedRenderer->AddActor(convolvedActor);convolvedRenderer->SetBackground(1.0, 1.0, 1.0);convolvedRenderer->ResetCamera();vtkSmartPointer<vtkRenderWindow> rw =vtkSmartPointer<vtkRenderWindow>::New();;rw->AddRenderer(originalRenderer);rw->AddRenderer(convolvedRenderer);rw->SetSize(640, 320);rw->Render();rw->SetWindowName("Smooth by MeanFilter");vtkSmartPointer<vtkRenderWindowInteractor> rwi =vtkSmartPointer<vtkRenderWindowInteractor>::New();vtkSmartPointer<vtkInteractorStyleImage> style =vtkSmartPointer<vtkInteractorStyleImage>::New();rwi->SetInteractorStyle(style);rwi->SetRenderWindow(rw);rwi->Initialize();rwi->Start();return 0; }
首先vtkJPEGReader對象讀取一幅圖像。考慮到進行卷積運算時數據范圍的變化和精度要求,需要先將圖像像素數據類型由unsigned char轉換到float類型,該變換通過vtkImageCast實現,對應的設置函數SetOutputScalarTypeToFloat()。接下來需要定義卷積算子和卷積模板。vtkImageConvolve類實現圖像的卷積運算,它需要兩個輸入。一個是需要進行卷積的圖像,這里為vtkJPEGReader讀取的圖像數據,第二個是卷積模板數組。SetKernel5x5()函數接收一個5x5的卷積模板數組,即本例上定義的kernel數組。執行Update()后即可完成卷積運算。需要注意的是,卷積模板對應的系數之和應該為1,否則需要對計算結果進行歸一化處理。另外該類中還定義了3x3和7x7的卷積模板設置函數,使用過程是一樣的。卷積完成以后,再次通過vtkImageCast將float數據類型轉換為unsigned char進行圖像顯示。

均值濾波的結果如下:

2.參看資料

1.《C++ primer》
2.《The VTK User’s Guide – 11thEdition》
3. ?張曉東, 羅火靈. VTK圖形圖像開發進階[M]. 機械工業出版社, 2015.

總結

以上是生活随笔為你收集整理的VTK修炼之道36:图像平滑_均值滤波器的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 免费涩涩视频 | 国产老女人乱淫免费 | 五月av综合av国产av | 美女高潮视频在线观看 | 免费日韩一区二区 | 72种无遮挡啪啪的姿势 | 极品久久久 | 男人天堂a| 亚洲精品一区二区三区不卡 | 精品无码一区二区三区的天堂 | 欧美日韩人妻精品一区二区 | 一区二区三区 日韩 | 日韩中文字幕 | 天天射天天操天天干 | 亚洲成人高清在线 | 91久久中文字幕 | 五月天欧美 | 最新黄色av| 欧美色图亚洲色 | www.777奇米影视 | 成年黄色网 | 欧美日韩不卡合集视频 | 日韩三级电影网址 | 热久久亚洲 | 日本高清不卡在线观看 | 中文无码精品一区二区三区 | 欧美91精品久久久久国产性生爱 | 日韩在线91| 亚洲精品综合网 | 美日韩一级 | 国产特级av| 天堂中文在线观看视频 | av免费精品 | 日韩av成人网 | 久草网视频 | 一级肉体全黄裸片 | youjizz亚洲| www.五月.com | 人人妻人人澡人人爽国产一区 | 欧美在线观看一区 | 中文字幕在线免费观看视频 | 亲子伦视频一区二区三区 | 天天操天天添 | 中国超碰| 能免费看18视频网站 | 在线一级片 | 黄色大片aa | 黄色一级一级 | 香蕉久久夜色精品 | 免费看av软件 | 国产精品无码久久久久高潮 | 久久久人| 最新久久| 国产美女在线观看 | www.蜜臀 | 亚洲欧洲成人在线 | 色哟哟一区二区三区 | 亚洲一区无 | 欧美色乱 | 亚洲美女屁股眼交8 | 亚洲激情视频在线播放 | 亚洲av无码乱码国产精品 | 美女扒开尿口给男人看 | 亚洲成色网 | 久久er99热精品一区二区介绍 | 国产裸体无遮挡 | 毛片内射| 亚洲一区二区综合 | 日本免费网址 | 五月情网| 天天摸天天碰天天爽天天弄 | 午夜免费福利网站 | 欧美亚洲激情 | 日本大尺度激情做爰hd | 久久久久久毛片 | 美女久久久久久久久 | 嫩草影院中文字幕 | 婷婷色在线| 欧美暧暧视频 | 中国丰满熟妇xxxx性 | 日日日夜夜操 | 久久99久久99精品 | 久久国产精品无码一区二区 | 国产福利片一区二区 | 亚洲色图网址 | 99成人在线观看 | 国产黄色片在线 | 五月天激情啪啪 | 久久黄色录像 | 国产一区一一区高清不卡 | 中文字幕在线有码 | 色欲人妻综合网 | 免费高清毛片 | 91情侣视频| 右手影院亚洲欧美 | 91污网站 | 可以在线看黄的网站 | 色综合欧美 | 国产视频网站在线观看 |