Opencvフィルタリング

8904 ワード

g(i,j) = alpha * f(i,j) + beta
Alpha対応コントラスト
betaが輝度画像に対応するフィルタリングの主な目的は、画像の詳細を保持する場合に画像のノイズをできるだけ除去することであり、その後の画像処理がより便利になることである.
画像のフィルタリング効果は2つの条件を満たす:1.画像の輪郭やエッジなどの重要な特徴情報を損なうことはできない.2.画像の視覚効果が高い
Opencvは画像フィルタリングをサポートし,ブロックフィルタリング,平均フィルタリング,Gaussフィルタリング,中値フィルタリングおよび二重フィルタリングの5つの基本アルゴリズムを提供し,最初の3つは線形フィルタリングアルゴリズム,後の2つは非線形フィルタリングアルゴリズムである.
一.ブロックフィルタリング
       ,                   ,                                    ,opencv     ,             ,  ,          X*Y                                      .
                 ,    X*Y     ,       X*Y                  ,     .

二.へいきんフィルタリング
                         ,              ,           ,    

三.ガウスフィルタ
                      (    )         ,             ,             ,                 ,                 ,                  ,                   .

     API:void GaussianBlur(   ,    ,Size     ,double       X       ,double       Y      ,int     ).

      :             ,        ,               ,  X,Y       0,  API           ,                 .

四.メジアンフィルタ
                                   ,                       ,          ,               ,         .           ,        ,                ,  ,             .          ,                  .

     API:void medianBlur(   ,    ,int     )

      :       1   

五.デュアルフィルタBilateral Filtering
          ,                      ,    ,    ,                        ,              ,                      ,       ,  ,                  ,        ,          .

       ,              ,            ,            .

     API:void bilateralFilter(   ,    ,int       , ,double        sigma doble        sigma,int     );
#coding=utf-8

import cv2
import matplotlib.pyplot as plt

src=cv2.imread("1.jpg")
#    
dst = cv2.blur(src,(3,3))
cv2.imwrite("123.jpg",dst)
#    
dst1= cv2.medianBlur(src,3)
cv2.imwrite("dst1.jpg",dst1)
#    
dst2=cv2.GaussianBlur(src,(3,3),0)
cv2.imwrite("dst2.jpg",dst2)
#    
#9     ,   75             ,             
dst3=cv2.bilateralFilter(src,9,75,75)
cv2.imwrite("dst3.jpg",dst3)
#coding=utf-8
import cv2
import numpy as np
from matplotlib import pyplot as plt
from ConfigParser import InterpolationError

src=cv2.imread("1.jpg")
#suofang
height,width=src.shape[:2]
res = cv2.resize(src,(2*width, 2*height), interpolation = cv2.INTER_CUBIC)
//3*width,3*windth
cv2.imwrite("res1.jpg",res)

#pingyi    
rows,cols = src.shape[:2]
M = np.float32([[1,0,18],[0,1,15]])
dst = cv2.warpAffine(src,M,(cols,rows))
cv2.imwrite("pingyi1.jpg",dst)

rows,cols = src.shape[:2]
M = np.float32([[1,0,24],[0,1,20]])
dst = cv2.warpAffine(src,M,(cols,rows))
cv2.imwrite("pingyi2.jpg",dst)


#xuanzhuan
rows,cols=src.shape[:2]
#          ,          ,          
M = cv2.getRotationMatrix2D((cols/2,rows/2),45,1)#    45 
M2 = cv2.getRotationMatrix2D((cols/2,rows/2),-45,1)#    45 
#     :        
res2 = cv2.warpAffine(src,M,(rows,cols))
res3 = cv2.warpAffine(src,M2,(rows,cols))
cv2.imwrite("  .jpg",res2)
cv2.imwrite("   .jpg",res3)

    #####           
#    
img=cv2.imread('1.jpg')
rows,cols,ch=img.shape
pts1=np.float32([[10,10],[40,10],[10,40]])
pts2=np.float32([[2,16],[32,8],[8,40]])
pts3=np.float32([[10,10],[40,10],[10,40]])
pts4=np.float32([[2,20],[40,10],[10,50]])
M=cv2.getAffineTransform(pts1,pts2)
dst=cv2.warpAffine(img,M,(cols,rows))
M2=cv2.getAffineTransform(pts3,pts4)
dst2=cv2.warpAffine(img,M2,(cols,rows))
plt.subplot(221),plt.imshow(img),plt.title('Input')
plt.subplot(222),plt.imshow(dst),plt.title('Output')
plt.subplot(223),plt.imshow(img),plt.title('Input2')
plt.subplot(224),plt.imshow(dst2),plt.title('Output2')
plt.show()

#print "Done"

輝度はコントラストg(i,j)=alpha*f(i,j)+beta alphaに対応コントラストbetaに対応輝度に対応
# -*- coding: utf-8 -*-
"""
Created on Sat Jan 11 10:41:52 2014
@author: duan
"""

import cv2
import numpy as np
from matplotlib import pyplot as plt
from ConfigParser import InterpolationError

alpha=1
beta=-20
alpha2=1
beta2=40
img=cv2.imread("1.jpg",0)
img2=cv2.imread("1.jpg",0)

#liangdu
x=y=0
res=img
res2=img2
# for x in range(0,img.shape[0]):
#     for y in range(0,img.shape[1]):
#         res.itemset((x,y), alpha*(img.item(x,y)) +beta)
#         res2.itemset((x,y),alpha*(img.item(x,y)) +beta2)
#         
# #duibidu
# x=y=0
# res=img
# res2=img2
# for x in range(0,img.shape[0]):
#     for y in range(0,img.shape[1]):
#         res.itemset((x,y),alpha*(img.item(x,y)))
#         res2.itemset((x,y),alpha2*(img2.item(x,y)))
#        
#         

#liangdu

for x in range(0,img.shape[0]):
    for y in range(0,img.shape[1]/3):
        res.itemset((x,y),(img.item(x,y)) + beta)
        res2.itemset((x,y),(img2.item(x,y)) + beta2)
cv2.imwrite("res2.jpg",res)
cv2.imwrite("res3.jpg",res2)

print "done"