国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

(數(shù)字圖像處理MATLAB+Python)第七章圖像銳化-第四節(jié):頻域高通濾波與綜合案例

這篇具有很好參考價值的文章主要介紹了(數(shù)字圖像處理MATLAB+Python)第七章圖像銳化-第四節(jié):頻域高通濾波與綜合案例。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

一:頻域高通濾波

頻域高通濾波:是一種基于頻域表示的圖像處理技術(shù),用于增強(qiáng)或突出圖像中高頻成分的方法。它通過將圖像轉(zhuǎn)換到頻域,應(yīng)用高通濾波器來抑制或減弱低頻成分,從而增強(qiáng)圖像的邊緣和細(xì)節(jié)
(數(shù)字圖像處理MATLAB+Python)第七章圖像銳化-第四節(jié):頻域高通濾波與綜合案例

在頻域中,可以設(shè)計(jì)各種類型的高通濾波器來實(shí)現(xiàn)不同的頻率響應(yīng)

(1)理想的高通濾波器

理想的高通濾波器:通過在頻率域上施加一個截止頻率,將低于該截止頻率的成分完全抑制,而保留高于截止頻率的成分。這種濾波器具有陡峭的截止特性,但會引入振鈴效應(yīng)

H ( u , v ) = { 0 D ( u , v ) ≤ D 0 1 D ( u , v ) > D 0 H(u, v)=\left\{\begin{array}{ll}0 & D(u, v) \leq D_{0} \\1 & D(u, v)>D_{0}\end{array}\right. H(u,v)={01?D(u,v)D0?D(u,v)>D0??

(數(shù)字圖像處理MATLAB+Python)第七章圖像銳化-第四節(jié):頻域高通濾波與綜合案例

(數(shù)字圖像處理MATLAB+Python)第七章圖像銳化-第四節(jié):頻域高通濾波與綜合案例

(2)巴特沃斯高通濾波器

巴特沃斯高通濾波器:提供了更平滑的頻率過渡,并且沒有振鈴效應(yīng)。它可以根據(jù)設(shè)計(jì)參數(shù)調(diào)整截止頻率和滾降特性的斜率

H ( u , v ) = 1 1 + [ D 0 / D ( u , v ) ] 2 n H(u, v)=\frac{1}{1+\left[D_{0} / D(u, v)\right]^{2 n}} H(u,v)=1+[D0?/D(u,v)]2n1?

(數(shù)字圖像處理MATLAB+Python)第七章圖像銳化-第四節(jié):頻域高通濾波與綜合案例

(數(shù)字圖像處理MATLAB+Python)第七章圖像銳化-第四節(jié):頻域高通濾波與綜合案例

(3)指數(shù)高通濾波器

指數(shù)高通濾波器:基于指數(shù)函數(shù)的特性,在頻域上實(shí)現(xiàn)對低頻信號的抑制,從而提取圖像的高頻細(xì)節(jié)

H ( u , v ) = exp ? { ? [ D 0 D ( u , v ) ] u } H(u, v)=\exp \left\{-\left[\frac{D_{0}}{D(u, v)}\right]^{u}\right\} H(u,v)=exp{?[D(u,v)D0??]u}

(數(shù)字圖像處理MATLAB+Python)第七章圖像銳化-第四節(jié):頻域高通濾波與綜合案例

(數(shù)字圖像處理MATLAB+Python)第七章圖像銳化-第四節(jié):頻域高通濾波與綜合案例

(4)梯形高通濾波器

梯形高通濾波器:與其他高通濾波器不同,梯形高通濾波器的頻率響應(yīng)以梯形的形狀逐漸減弱低頻信號并保留高頻信號

H ( u , v ) = { 0 D ( u , v ) < D 0 1 D 1 ? D 0 [ D ( u , v ) ? D 0 ] D 0 ≤ D ( u , v ) ≤ D 1 1 D ( u , v ) > D 1 H(u, v)=\left\{\begin{array}{cc}0 & D(u, v)<D_{0} \\\frac{1}{D_{1}-D_{0}}\left[D(u, v)-D_{0}\right] & D_{0} \leq D(u, v) \leq D_{1} \\1 & D(u, v)>D_{1}\end{array}\right. H(u,v)=? ? ??0D1??D0?1?[D(u,v)?D0?]1?D(u,v)<D0?D0?D(u,v)D1?D(u,v)>D1??

(數(shù)字圖像處理MATLAB+Python)第七章圖像銳化-第四節(jié):頻域高通濾波與綜合案例

(數(shù)字圖像處理MATLAB+Python)第七章圖像銳化-第四節(jié):頻域高通濾波與綜合案例

二:綜合案例——人像美化

(1)設(shè)計(jì)思路

要求:盡可能地使皮膚變得平滑、白皙。采用所學(xué)基礎(chǔ)處理方法實(shí)現(xiàn)題目要求

操作

  • 圖像平滑處理,去除瑕疵
  • 基于膚色模型的皮膚區(qū)域分割;
  • 將原始圖像的背景部分和平滑的皮膚圖像進(jìn)行融合;
  • 對融合后的圖像進(jìn)行適度銳化

(2)各模塊設(shè)計(jì)

主程序

(數(shù)字圖像處理MATLAB+Python)第七章圖像銳化-第四節(jié):頻域高通濾波與綜合案例

平滑:雙邊濾波

(數(shù)字圖像處理MATLAB+Python)第七章圖像銳化-第四節(jié):頻域高通濾波與綜合案例

皮膚區(qū)域分割
(數(shù)字圖像處理MATLAB+Python)第七章圖像銳化-第四節(jié):頻域高通濾波與綜合案例

圖像融合:將雙邊濾波后的圖像提取膚色區(qū)域,原圖提取背景區(qū)域,兩圖融合

(數(shù)字圖像處理MATLAB+Python)第七章圖像銳化-第四節(jié):頻域高通濾波與綜合案例

圖像銳化:p采用拉普拉斯算子銳化,銳化力度降為1/3

(數(shù)字圖像處理MATLAB+Python)第七章圖像銳化-第四節(jié):頻域高通濾波與綜合案例

(3)程序

matlab實(shí)現(xiàn)

clear,clc,close all;
ImageOrigin=im2double(imread('face8.jpg'));
figure,imshow(ImageOrigin),title('原圖');
DBImage=DBfilt(ImageOrigin);

SkinImage1=FirstFilter(ImageOrigin);            %%初步過濾
SkinArea=SecondFilter(SkinImage1);           %%YCgCr空間范圍膚色檢測

SkinFuse=Fuse(ImageOrigin,DBImage,SkinArea);
SkinBeautify=Sharp(SkinFuse);

function Out=DBfilt(In)
    [height,width,c] = size(In); 
    win=15;       % 定義雙邊濾波窗口寬度  
    sigma_s=6; sigma_r=0.1; % 雙邊濾波的兩個標(biāo)準(zhǔn)差參數(shù)  
    [X,Y] = meshgrid(-win:win,-win:win); 
    Gs = exp(-(X.^2+Y.^2)/(2*sigma_s^2));%計(jì)算鄰域內(nèi)的空間權(quán)值    
    Out=zeros(height,width,c); 
    for k=1:c
        for j=1:height    
            for i=1:width  
                temp=In(max(j-win,1):min(j+win,height),max(i-win,1):min(i+win,width),k);
                Gr = exp(-(temp-In(j,i,k)).^2/(2*sigma_r^2));%計(jì)算灰度鄰近權(quán)值        
                % W為空間權(quán)值Gs和灰度權(quán)值Gr的乘積       
                W = Gr.*Gs((max(j-win,1):min(j+win,height))-j+win+1,(max(i-win,1):min(i+win,width))-i+win+1);      
                Out(j,i,k)=sum(W(:).*temp(:))/sum(W(:));            
            end
        end  
    end
    figure,imshow(Out),title('雙邊濾波');
end
function Out=FirstFilter(In)
    Out=In;
    [height,width,c] = size(In); 
    IR=In(:,:,1); IG=In(:,:,2);IB=In(:,:,3);
    for j=1:height
        for i=1:width
            if (IR(j,i)<160/255 && IG(j,i)<160/255 && IB(j,i)<160) && (IR(j,i)>IG(j,i) && IG(j,i)>IB(j,i))
                Out(j,i,:)=0;
            end
            if IR(j,i)+IG(j,i)>500/255
                Out(j,i,:)=0;
            end
            if IR(j,i)<70/255 && IG(j,i)<40/255 && IB(j,i)<20/255
                Out(j,i,:)=0;
            end
        end
    end
 
    figure,imshow(Out);title('非膚色初步過濾'); 
end
function Out=SecondFilter(In)
    IR=In(:,:,1); IG=In(:,:,2);IB=In(:,:,3);       
    [height,width,c] = size(In);
    Out=zeros(height,width);
    for i=1:width
        for j=1:height  
           R=IR(j,i); G=IG(j,i); B=IB(j,i);       
           Cg=(-81.085)*R+(112)*G+(-30.915)*B+128;  
           Cr=(112)*R+(-93.786)*G+(-18.214)*B+128;         
           if Cg>=85 && Cg<=135 && Cr>=-Cg+260 && Cr<=-Cg+280       
               Out(j,i)=1;          
           end
        end
    end
    Out=medfilt2(Out,[3 3]);
    
    figure,imshow(Out),title('YCgCr空間范圍膚色檢測');    
end

function Out=Fuse(ImageOrigin,DBImage,SkinArea)
    Skin=zeros(size(ImageOrigin));
    Skin(:,:,1)=SkinArea;   
    Skin(:,:,2)=SkinArea;  
    Skin(:,:,3)=SkinArea;
    Out=DBImage.*Skin+double(ImageOrigin).*(1-Skin);
    
    figure,imshow(Out);title('膚色與背景圖像融合');
end
function Out=Sharp(In)
    H=[0 -1 0;-1 4 -1;0 -1 0]; %Laplacian銳化模板
    Out(:,:,:)=imfilter(In(:,:,:),H); 
    Out=Out/3+In;
%     imwrite(Out,'man4.jpg');
    figure,imshow(Out),title('Laplacia銳化圖像');
end

Python實(shí)現(xiàn)文章來源地址http://www.zghlxwxcb.cn/news/detail-475942.html

import cv2
import numpy as np
import matplotlib.pyplot as plt

def DBfilt(image):
    height, width, c = image.shape
    win = 15
    sigma_s = 6
    sigma_r = 0.1
    X, Y = np.meshgrid(np.arange(-win, win + 1), np.arange(-win, win + 1))
    Gs = np.exp(-(X**2 + Y**2) / (2 * sigma_s**2))

    output = np.zeros((height, width, c))
    for k in range(c):
        for j in range(height):
            for i in range(width):
                temp = image[max(j - win, 0):min(j + win, height), max(i - win, 0):min(i + win, width), k]
                Gr = np.exp(-(temp - image[j, i, k])**2 / (2 * sigma_r**2))
                W = Gr * Gs[max(j - win, 0):min(j + win, height) - j + win + 1,
                            max(i - win, 0):min(i + win, width) - i + win + 1]
                output[j, i, k] = np.sum(W * temp) / np.sum(W)
    return output

def FirstFilter(image):
    output = np.copy(image)
    height, width, _ = image.shape
    IR = image[:, :, 2]
    IG = image[:, :, 1]
    IB = image[:, :, 0]

    for j in range(height):
        for i in range(width):
            if (IR[j, i] < 160/255 and IG[j, i] < 160/255 and IB[j, i] < 160/255) and \
                    (IR[j, i] > IG[j, i] and IG[j, i] > IB[j, i]):
                output[j, i, :] = 0
            if IR[j, i] + IG[j, i] > 500/255:
                output[j, i, :] = 0
            if IR[j, i] < 70/255 and IG[j, i] < 40/255 and IB[j, i] < 20/255:
                output[j, i, :] = 0
    return output

def SecondFilter(image):
    height, width, _ = image.shape
    IR = image[:, :, 2]
    IG = image[:, :, 1]
    IB = image[:, :, 0]
    output = np.zeros((height, width))

    for i in range(width):
        for j in range(height):
            R = IR[j, i]
            G = IG[j, i]
            B = IB[j, i]
            Cg = (-81.085) * R + (112) * G + (-30.915) * B + 128
            Cr = (112) * R + (-93.786) * G + (-18.214) * B + 128
            if Cg >= 85 and Cg <= 135 and Cr >= -Cg + 260 and Cr <= -Cg + 280:
                output[j, i] = 1
    output = cv2.medianBlur(output.astype(np.float32), 3)
    return output

def Fuse(image, db_image, skin_area):
    skin = np.zeros(image.shape)
    skin[:, :, 0] = skin_area
    skin[:, :, 1] = skin_area
	skin[:, :, 2] = skin_area
	output = db_image * skin + image * (1 - skin)
	return output

def Sharp(image):
	kernel = np.array([[0, -1, 0], [-1, 4, -1], [0, -1, 0]], dtype=np.float32)
	output = cv2.filter2D(image, -1, kernel)
	output = output / 3 + image
	return output

# 讀取圖像
image_origin = cv2.imread('face8.jpg')
image_origin = cv2.cvtColor(image_origin, cv2.COLOR_BGR2RGB)
# 顯示原圖
plt.figure()
plt.imshow(image_origin)
plt.title('原圖')
plt.axis('off')
# 雙邊濾波
db_image = DBfilt(image_origin)
# 初步過濾
skin_image1 = FirstFilter(image_origin)
plt.figure()
plt.imshow(skin_image1)
plt.title('非膚色初步過濾')
plt.axis('off')
# YCgCr空間范圍膚色檢測
skin_area = SecondFilter(skin_image1)
plt.figure()
plt.imshow(skin_area, cmap='gray')
plt.title('YCgCr空間范圍膚色檢測')
plt.axis('off')
# 膚色與背景圖像融合
skin_fuse = Fuse(image_origin, db_image, skin_area)
plt.figure()
plt.imshow(skin_fuse)
plt.title('膚色與背景圖像融合')
plt.axis('off')
# Laplacian銳化圖像
skin_beautify = Sharp(skin_fuse)
plt.figure()
plt.imshow(skin_beautify)
plt.title('Laplacia銳化圖像')
plt.axis('off')

plt.show()

到了這里,關(guān)于(數(shù)字圖像處理MATLAB+Python)第七章圖像銳化-第四節(jié):頻域高通濾波與綜合案例的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包