單尺度Retinex(matlab)
說明:此程式碼是針對灰度影像的
clc;clear;
I=imread('DR_ck_0001.tiff');
% Ir=I(:,:,1);%提取紅色分量
% Ig=I(:,:,2);%提取綠色分量
% Ib=I(:,:,3);%提取藍色分量
% I1=SSR(Ir); %自定義單尺度Retinex處理函式
% I2=SSR(Ig);
% I3=SSR(Ib);
% In=cat(3,I1,I2,I3); %cat用於構造多維陣列
In = SSR(I);
t = exp(-10);
enhanced = log(double(I)+t)-log(In+t);
enhanced = normal(enhanced);
subplot(1,3,1);imshow(I);
title('A). 原始影像');
subplot(1,3,2);imshow(In,[]);
title('B). 單尺度Retinex');
subplot(1,3,3);imshow(enhanced,[]);
title('C). 單尺度Retinex');
%——————————————劃重點!!!!!!!!!!!!!!!!!!!!————————————————
function G = SSR(I)
%G=I;
[m,n]=size(I);
I=double(I);
x0=floor((m+1)/2);y0=floor((n+1)/2);
c = 70;
K=1/(sqrt(2*pi)*c);
for x=1:m
for y=1:n
G(x,y)=K*(exp(-((x)^2+(y)^2)/(2*c^2))); %高斯函式
end
end
Gfft=fft2(G);
Ifft=fft2(I);
Lfft=Gfft.*Ifft;
L=ifft2(Lfft);
r=log(I+1)-log(L+1); %加1是為了防止對數為0時,log0沒有定義
%線性拉伸,將灰度範圍轉換到0-255,(直接求反對數的效果不好)
MIN=min(min(r));
MAX=max(max(r));
new=((r-MIN)*255/(MAX-MIN));
A=new;
end
function out =normal(img)
maxx = max(max(img));
minn = min(min(img));
out=(img-minn)./(maxx-minn);
end
相關文章
- Retinex影像增強演算法的優勢分析演算法
- 非度量多維尺度分析
- 聊聊向上管理中的“尺度”
- 近似熵-樣本熵-多尺度熵熵
- (1) 地圖尺度和位姿修改地圖
- MAGNet -MAFM 多尺度感知融合模組
- [MATLAB] plot畫圖簡單細節隨記Matlab
- 運籌學——matlab實現單純形法Matlab
- 尺度不變人臉檢測:Group Sampling
- YOLOv3 中的多尺度融合與訓練YOLO
- MATLAB神經網路工具箱(簡單操作介紹)Matlab神經網路
- 2020-12-18 Matlab LQR 推導及簡單應用Matlab
- matlab classdefMatlab
- geoshow in matlabMatlab
- matlab技巧Matlab
- MATLAB神經網路工具箱(程式碼簡單實現)Matlab神經網路
- 目標檢測精讀 | SNIP:解決“尺度不變性”
- Matlab繪圖Matlab繪圖
- matlab呼叫pythonMatlabPython
- matlab 基礎Matlab
- 模板匹配(matlab)Matlab
- MATLAB VS PYTHONMatlabPython
- [MATLAB]排列大小Matlab
- matlab快捷鍵Matlab
- [MatLab]學習筆記2:MatLab數值資料Matlab筆記
- 小紅書“致歉濾鏡景點”:種草社群的尺度在哪?
- matlab版本轉換Matlab
- matlab讀資料Matlab
- Matlab常用語句Matlab
- SciPy Matlab 陣列Matlab陣列
- matlab如何生成exeMatlab
- matlab開啟drivingScenarioDesignerMatlab
- 【Matlab】基礎教程Matlab
- 每日總結(matlab)Matlab
- ☆☆如何學習MATLAB☆☆Matlab
- Local dimming algorithm in matlabGoMatlab
- matlab表示函式Matlab函式
- 【MATLAB生信分析】MATLAB生物資訊分析工具箱(二)Matlab