學習OpenCV:濾鏡系列(5)——徑向模糊:縮放&旋轉
【原文:http://blog.csdn.net/yangtrees/article/details/9103935】
==============================================
版權所有:小熊不去實驗室CSDN部落格
==============================================
原理來自:Game Render
這效果在鬼泣4中切換場景時見過, 極品飛車12的運動模糊也有這種感覺.
PS裡稱為 徑向模糊->縮放, 還有一種 徑向模糊->旋轉。
縮放的原理:
確定一箇中心點(如0.5, 0.5), 跟當前畫素連一條線. 以當前畫素為中心, 線上上的附近畫素進行取樣, 最後取一下平均值.
同樣,旋轉的原理相似,就是相同半徑的一定鄰域內的均值。
縮放時,半徑變化,旋轉時,角度變化。
使用OpenCV實現
原圖:
徑向模糊->縮放:
- #include <math.h>
- #include <opencv/cv.h>
- #include <opencv/highgui.h>
- using namespace cv;
- using namespace std;
- int num=40;//num:均值力度;
- int main()
- {
- Mat src = imread("D:/test3.jpg",1);
- Mat src1u[3];
- split(src,src1u);
- int width=src.cols;
- int heigh=src.rows;
- Mat img;
- src.copyTo(img);
- Point center(width/2,heigh/2);
- for (int y=0; y<heigh; y++)
- {
- uchar *imgP = img.ptr<uchar>(y);
- for (int x=0; x<width; x++)
- {
- int R = norm(Point(x,y)-center);
- double angle = atan2((double)(y-center.y),(double)(x-center.x));
- int tmp0=0,tmp1=0,tmp2=0;
- for (int i=0;i<num;i++) //num:均值力度 ,i為變化幅度;
- {
- int tmpR = (R-i)>0?(R-i):0;
- int newX = tmpR*cos(angle) + center.x;
- int newY = tmpR*sin(angle) + center.y;
- if(newX<0)newX=0;
- if(newX>width-1)newX=width-1;
- if(newY<0)newY=0;
- if(newY>heigh-1)newY=heigh-1;
- tmp0 += src1u[0].at<uchar>(newY,newX);
- tmp1 += src1u[1].at<uchar>(newY,newX);
- tmp2 += src1u[2].at<uchar>(newY,newX);
- }
- imgP[3*x]=(uchar)(tmp0/num);
- imgP[3*x+1]=(uchar)(tmp1/num);
- imgP[3*x+2]=(uchar)(tmp2/num);
- }
- }
- imshow("徑向模糊",img);
- waitKey();
- imwrite("D:/徑向模糊(縮放).jpg",img);
- }
徑向模糊->旋轉:
- #include <math.h>
- #include <opencv/cv.h>
- #include <opencv/highgui.h>
- using namespace cv;
- using namespace std;
- int num=20; //均值力度;
- int main()
- {
- Mat src = imread("D:/test3.jpg",1);
- Mat src1u[3];
- split(src,src1u);
- int width=src.cols;
- int heigh=src.rows;
- Mat img;
- src.copyTo(img);
- Point center(width/2,heigh/2);
- for (int y=0; y<heigh; y++)
- {
- uchar *imgP = img.ptr<uchar>(y);
- for (int x=0; x<width; x++)
- {
- int R = norm(Point(x,y)-center);
- double angle = atan2((double)(y-center.y),(double)(x-center.x));
- int tmp0=0,tmp1=0,tmp2=0;
- for (int i=0;i<num;i++) //均值力度;
- {
- angle+=0.01; //0.01控制變化頻率,步長
- int newX = R*cos(angle) + center.x;
- int newY = R*sin(angle) + center.y;
- if(newX<0)newX=0;
- if(newX>width-1)newX=width-1;
- if(newY<0)newY=0;
- if(newY>heigh-1)newY=heigh-1;
- tmp0 += src1u[0].at<uchar>(newY,newX);
- tmp1 += src1u[1].at<uchar>(newY,newX);
- tmp2 += src1u[2].at<uchar>(newY,newX);
- }
- imgP[3*x]=(uchar)(tmp0/num);
- imgP[3*x+1]=(uchar)(tmp1/num);
- imgP[3*x+2]=(uchar)(tmp2/num);
- }
- }
- imshow("徑向模糊",img);
- waitKey();
- imwrite("D:/徑向模糊(旋轉).jpg",img);
- }
原理Reference:
http://blog.csdn.net/xoyojank/article/details/5146297
http://bbs.9ria.com/thread-111831-1-1.html
相關文章
- 影像縮放、旋轉、翻轉、平移
- webgl濾鏡--旋轉的三原色Web
- ARFoundation - 實現物體旋轉, 平移,縮放
- opencv中自定義的雙線性二次插值的影像旋轉及縮放OpenCV
- opencv 影像的型別轉換、影像的縮放OpenCV型別
- OpenCV計算機視覺學習(11)——影像空間幾何變換(影像縮放,影像旋轉,影像翻轉,影像平移,仿射變換,映象變換)OpenCV計算機視覺
- 使用RxJava實現ImageView的拖動、旋轉和縮放RxJavaView
- lightroom中文基礎教程:使用徑向漸變濾鏡調整夕陽OOM
- CGAffineTransform二維檢視旋轉、縮放、平移變換詳解ORM
- Qt 從 QTransform 逆向解出 Translate/Scale/Rotate(平移/縮放/旋轉)分析QTORM
- 修圖調色降噪濾鏡_Nik Collection 5 (濾鏡外掛)_中文Nik 5
- [Python影象處理] 六.影象縮放、影象旋轉、影象翻轉與影象平移Python
- Canvas系列之一——濾鏡效果Canvas
- 半小時輕鬆玩轉WebGL濾鏡技術系列(一)Web
- 半小時輕鬆玩轉WebGL濾鏡技術系列(二)Web
- win10螢幕字型縮放模糊怎麼辦_win10縮放後字型模糊如何解決Win10
- 第四個OpenGL程式,vector 向量 (矩陣變換之 旋轉,縮放)矩陣
- QT 自定義QGraphicsItem 縮放後旋轉 圖形出現漂移問題QT
- 手遊UI互動動作設計研究:縮放、書寫、旋轉UI
- opencv 圖片幾何變換-縮放OpenCV
- 影像濾鏡藝術----Brannan濾鏡NaN
- PS濾鏡外掛:Nik Collection 5
- CSS屬性transform之旋轉:rotate,縮放:scale,傾斜:skew,移動:translateCSSORM
- C#+OpenCV基礎(四)_旋轉翻轉透視C#OpenCV
- H5 和小程式拍照圖片旋轉、壓縮和上傳H5
- OpenCV學習筆記(5)——normalize函式OpenCV筆記ORM函式
- [轉]memcached學習系列
- Nik Collection 5:PS濾鏡外掛套裝
- opencv 學習OpenCV
- 開源圖片工具箱(Img Toolbox) 格式轉換 新增水印 圖片壓縮 圖片裁剪 圖片旋轉 圖片縮放
- 視覺化學習:WebGL實現縮放平移視覺化Web
- blender python api -修改骨架中特定骨骼的變換,包括沿不同軸的旋轉、位置和縮放(旋轉為四元數運算WXYZ)PythonAPI
- OpenCV計算機視覺學習(4)——影像平滑處理(均值濾波,高斯濾波,中值濾波,雙邊濾波)OpenCV計算機視覺
- 美顏濾鏡SDK的智慧濾鏡與傳統顏色濾鏡有什麼區別?
- CSS濾鏡(filter)CSSFilter
- SVG <filter> 濾鏡SVGFilter
- [OpenGL]未來視覺5-抖音濾鏡視覺
- Nik Collection 5 for Mac(PS濾鏡外掛套裝)Mac
- PS濾鏡外掛套裝:Nik Collection 5 for MacMac