1. 程式人生 > >[數字影象處理]模糊演算法用於影象增強

[數字影象處理]模糊演算法用於影象增強

function [W1,W2,W3,W4,B] = Fuzzy_Knowledge_Filters(Intensity)

for x = 1:1:3
   for y = 1:1:3
       if((Intensity(x,y) <= 0.2) &&(Intensity(x,y) >= -0.2))
           Intensity(x,y) = exp(-20*Intensity(x,y).*Intensity(x,y));
       else Intensity(x,y) = 0;
       end
   end
end

W1 = min(Intensity(1,2),Intensity(2,3));
W2 = min(Intensity(2,3),Intensity(3,2));
W3 = min(Intensity(3,2),Intensity(2,1));
W4 = min(Intensity(2,1),Intensity(1,2));
B = min(min(1-W1,1-W2),min(1-W3,1-W4));
  
end
%% ---------Using Fuzzy for Spatial Filters---------------
close all;
clear all;
clc;

f = imread('headCT_Vandy.tif');
f = mat2gray(f,[0 255]);

[M,N]=size(f);
f_Ex = zeros(M+2,N+2);

for x = 1:1:M
    for y = 1:1:N
        f_Ex(x+1,y+1) = f(x,y);
    end
end

z = zeros (3,3);
g = zeros (M+2,N+2);
for x = 2:1:M+1
    for y = 2:1:N+1
        z(1,1) = f_Ex(x-1,y-1) - f_Ex(x,y);
        z(1,2) = f_Ex(x-1,y) - f_Ex(x,y);
        z(1,3) = f_Ex(x-1,y+1) - f_Ex(x,y);
        
        z(2,1) = f_Ex(x,y-1) - f_Ex(x,y);
        z(2,2) = f_Ex(x,y) - f_Ex(x,y);
        z(2,3) = f_Ex(x,y+1) - f_Ex(x,y);
        
        z(3,1) = f_Ex(x+1,y-1) - f_Ex(x,y);
        z(3,2) = f_Ex(x+1,y) - f_Ex(x,y);
        z(3,3) = f_Ex(x+1,y+1) - f_Ex(x,y);
        
        [W1,W2,W3,W4,B] = Fuzzy_Knowledge_Filters(z);
        
        V1 = 0.8 * W1 + 0.2;
        V2 = 0.8 * W2 + 0.2;
        V3 = 0.8 * W3 + 0.2;
        V4 = 0.8 * W4 + 0.2;
        V5 = 0.8 - (0.8 * B);
        
        g(x,y) = ((W1*V1) + (W2*V2) + (W3*V3) + (W4*V4) + (B*V5))/(W1+W2+W3+W4+B); 
        
    end
end

figure();
subplot(1,2,1);
imshow(f,[0 1]);
xlabel('a).Original Image');

subplot(1,2,2);
imshow(g,[0 1]);
xlabel('b).Result of fuzzy');


%%
figure();
subplot(1,2,1);
x=-0.2:1/255:0.2;
y=1/sqrt(2*pi)*exp(-20*x.*x);
y = y/max(y);
x = -1:1/255:1;
y = [zeros(1,204) y zeros(1,204)];
plot(x,y); 
axis([-1,1,0,1]),grid;
axis square;
xlabel('a).Input memberchip functions for fuzzy');

subplot(1,2,2);
x1 = [0,0.2,1];y1 = [0,0,1];
x2 = [0,0.8,1];y2 = [1,0,0];
plot(x1,y1,x2,y2); 
axis([0,1,0,1]),grid;
axis square;
legend('WH','BL');
xlabel('b).Output memberchip functions for fuzzy');

相關推薦

[數字影象處理]模糊演算法用於影象增強

function [W1,W2,W3,W4,B] = Fuzzy_Knowledge_Filters(Intensity) for x = 1:1:3 for y = 1:1:3 if((Intensity(x,y) <= 0.2) &&(Intensity(x,y

數字影象處理系列四】影象資料集增強方式總結和實現

本系列python版本:python2.7.15 本系列opencv-python版本:opencv-python3.4.2.17 本系列使用的開發環境是jupyter notebook,是一個python的互動式開發環境,測試十分方便,並集成了vim操作,

數字影象處理】七.MFC影象增強影象普通平滑、高斯平滑、Laplacian、Sobel、Prewitt銳化詳解

        程式碼如下:void CImageProcessingView::OnTxzqPtph2() { if(numPicture==0) { AfxMessageBox("載入圖片後才能影象增強(平滑)!",MB_OK,0); return; } AfxMessageBox("影象

數字影象處理3之在影象增強中使用直方圖統計

在影象增強中我們也可以使用直接從直方圖中獲得的統計引數。 1、平均值、方差的定義 令r表示在區間[0 , L-1]上代表離散灰度的離散隨機變數,並且令表示對應於的歸一化直方圖分量,我們可以把看做是灰度級出現的概率估計值。 (1)r的均值定義為: (2)r關於其均值的n

數字影象處理系列三】影象增強:線性、 分段線性、 對數、 反對數、 冪律(伽馬)變換、直方圖均衡

本系列python版本:python3.5.4 本系列opencv-python版本:opencv-python3.4.2.17 本系列使用的開發環境是jupyter notebook,是一個python的互動式開發環境,測試十分方便,並集成了vim操作,安

影象處理OpenCV演算法04

8、邊緣檢測       大多數邊緣檢測運算元是基於方向差分卷積核求卷積的方法,通常有四種方式來衡量最後輸出的邊緣強度。(1)取對應位置絕對值的和:    ,(2)取對應位置平方和的開方:,(3)取對應位置絕對值的最大值:,(4

影象處理OpenCV演算法03

6、閾值分割       閾值分割主要是根據灰度值資訊提取前景,所以對前景物體有較強對比度的影象的分割特別有用。在OpenCV中通過呼叫cv2.threshold()實現閾值分割。         全閾值分割:將灰度值大於t

影象處理OpenCV演算法02

        5、影象濾波(平滑)         影象濾波(平滑),即在儘量保留影象細節特徵的條件下對目標影象的噪聲進行抑制,是影象預

影象處理OpenCV演算法01

OpenCV演算法           1、影象的基本操作讀取、顯示、儲存:通過呼叫OpenCV中的cv2.imread(),cv2.imshow(),cv2.write()分別實現。   &

影象模糊演算法 循序漸進 附完整程式碼

關於影象模糊演算法的實現, 我相信大多數學習影象演算法的朋友都很熟悉。 例如常見的毛玻璃效果,高斯模糊等等。 而影象模糊最簡單的實現就是 在一定區域 對畫素做平均值計算。 術語描述,卷積。 1.認識卷積 而平均值計算可以,是一種常見的卷積計算,卷積核權重都為1。 OpenCV中與之對應的演算法是BoxBlur

影象處理經典演算法及OpenCV程式

基於opencv的use攝像頭視訊採集程式 準備工作:你得把opencv庫裝到電腦上,並把各種標頭檔案,原始檔,lib庫都連到vc上,然後設定一下系統環境變數

數字影象處理——用Java對影象做映象變換

水平映象變換,也就是把影象的畫素點按照垂直中線做調換。 程式碼實現也很簡單: import javax.imageio.ImageIO; import java.awt.image.Buffer

OPENCV影象處理提高(一)影象增強

在影象處理學習中會涉及到直方圖,直方圖很好地表現了影象的灰度資訊;同時我們注意到在暗影象中,直方圖的分量集中在灰度級的低端;亮影象的灰度值集中在直方圖灰度值的高階;低對比度的影象有較窄的直方圖,並集中於直方圖的中間部分;高對比度的影象中直方圖的分量覆蓋很寬的範圍

影象處理——分水嶺演算法

首先感謝以下兩位的博文幫助我的理解: (1)邁克老狼2012   https://www.cnblogs.com/mikewolf2002/p/3304118.html (2)-牧野-              http://blog.csdn.net/dcrmg

數字影象處理之四】影象的放大縮小旋轉

縮放放大: 修改紅框裡面的引數,2.0表示放大兩倍,0.5表示縮小兩倍。 旋轉: 修改紅框裡面的引數,表示旋轉多少度。逆時針。 旋轉編寫程式碼的時候可能會出現這樣的情況: 因為旋轉的時候,

數字影象處理之二維影象的傅立葉變換(1)

1.1、訊號變化越快,說明頻率越大,訊號變化越慢,說明頻率越小。這裡的頻率不一定是通常意義上的頻率,通常的頻率是指週期的倒數,我們把通常意義上的頻率叫時間頻率。廣義上的頻率是指變化的快慢,比如圖片來說,從這個畫素到另外一個畫素的灰度值差距比較大,那麼頻率就比較高

Opencv 分水嶺演算法用於影象分割

目標 • 使用分水嶺演算法基於掩模的影象分割 • 學習函式: cv2.watershed() 原理   任何一幅灰度影象都可以被看成拓撲平面,灰度值高的區域可以被看成是山峰,灰度值低的區域可以被看成是山谷。我們向每一個山谷中灌不同顏色的水,隨著水的位的升

影象處理——ORB演算法

本文主要由jason來自星星的博文https://www.cnblogs.com/zjiaxing/p/5616653.html整理而得,在此表示感謝! 一、構造尺度金字塔    金字塔共n層,與SIFT不同,每層僅有一副影象;    第s層的尺度為,Fato

影象處理基本演算法 車牌識別與定位

       進行車牌識別和定位首先要了解車牌的特徵以及分類。 車牌主要包括以下幾種: 藍牌白字:普通小型車(其中包括政府機關專用號段、政法部門警車以外的行政用車)的牌照 黃牌黑字:大型車輛、摩托車、駕校教練車牌照 黑牌白字:涉外車輛牌照,式樣和藍牌基本相同 白牌:政法部門(公安、法院、檢察院、

影象處理-基本演算法之對數變換

對數變換實現了影象灰度擴充套件和壓縮的功能。它擴充套件低灰度值而壓縮高灰度值,讓影象的灰度分佈更加符合人的視覺特徵。     程式碼如下: [cpp] view plaincopyprint? /******