资源简介
将2D图像转换为红蓝3D效果。由本人编写,算法来自论文《A novel 2D-to-3D conversion technique based on relative height depth cue》by Yong Ju Jung等。
代码片段和文件信息
tic;
clc;clear all;
%% 检测边缘
f=imread(‘flower.jpg‘);
f_gray=rgb2gray(f);
f_gray=im2double(f_gray);
w1=[-1 -2 -1;0 0 0;1 2 1]; % sobel图像边缘增强
w2=[-1 0 1;-2 0 2;-1 0 1];
g1=imfilter(f_grayw1);
g2=imfilter(f_grayw2);
g=abs(g1)+abs(g2);
%% 生成初始深度图,initial_map
n=20; % 画20条线
[MN]=size(f_gray);
initial_map=ones(MN);
for k=1:n
initial_map(ceil(M/n*(k-1)+1):ceil(M/n*k):)=255/n*(k-1)*initial_map(ceil(M/n*(k-1)+1):ceil(M/n*k):);
end
initial_map=uint8(initial_map);
%figureimshow(initial_map)
%% 生成line_map
line=zeros(nN);
for k=1:n
line(k1)=ceil(M/n*k);
end
Elt=size(MN);
Es=size(MN);
Ee=size(MN);
E=size(MN);
a=0.1;
b=N/4;% N/4
c=N/4;% N/4
for k=1:n
for j=2:N
for i=1:M
Elt(ij)=exp(-g(ij)/a);
Es(ij)=abs(line(kj-1)-i)/b;
Ee(ij)=abs(i-line(k1))/c;
E(ij)=0.4*Elt(ij)+0.3*Es(ij)+0.3*Ee(ij);
end
[minCminI]=min(E(:j));
line(kj)=minI;
end
end
line_map=zeros(MN);
for k=1:n
for j=1:N
line_map(line(kj)j)=1;
end
end
figureimshow(line_map);
%% 生成深度图depth_map
depth_map=zeros(MN);
for k=1:n-1
for j=1:N
for h=line(kj):line(k+1j)
depth_map(hj)=255/n*(k-1);
end
end
end
for j=1:N
for u=line(nj):M
depth_map(uj)=255;
end
end
depth_map=uint8(depth_map);
figureimshow(depth_map);
%imwrite(depth_map‘wall深度图.bmp‘);
flab = rgb2hsi(f); %flab为原始图像f的hsi色彩空间版本
flab = im2double(flab);
depth_map=im2double(depth_map);
% Pre-compute Gaussian domain weights.
w=5;
[XY] = meshgrid(-w:w-w:w);
sigma_d=3;
sigma_r=0.1;
G = exp(-(X.^2+Y.^2)/(2*sigma_d^2));
% Rescale range variance (using maximum luminance).
% Create waitbar.
hh = waitbar(0‘Applying bilateral filter...‘);
set(hh‘Name‘‘Bilateral Filter Progress‘);
finaldepth=zeros(MN);
dim = size(flab);
for oo=1:5
for i = 1:dim(1)
for j = 1:dim(2)
% Extract local region.
iMin = max(i-w1);
iMax = min(i+wdim(1));
jMin = max(j-w1);
jMax = min(j+wdim(2));
I = flab(iMin:iMaxjMin:jMax:);
II=depth_map(iMin:iMaxjMin:jMax);
% Compute Gaussian range weights.
dI = I(::3)-flab(ij3);
H = exp(-(dI.^2)/(2*sigma_r^2));
% Calculate bilateral filter response.
F = H.*G((iMin:iMax)-i+w+1(jMin:jMax)-j+w+1); % 权重系数
norm_F = sum(F(:));
depth_map(ij)=sum(sum(F.*II))/norm_F;
%B(ij1) = sum(sum(F.*I(::1)))/norm_F;
%B(ij2) = sum(sum(F.*I(::2)))/norm_F;
%B(ij3) = sum(sum(F.*I(::3)))/norm_F;
end
end
waitbar(oo/10);
end
close(hh);
figureimshow(depth_map);
%imwrite(depth_map‘平滑wall深度图.bmp‘);
%% DIBR红蓝3D合成
fr=f(::1);
fg=f(::
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 3759 2013-05-04 15:11 myfinalwork.m
----------- --------- ---------- ----- ----
3759 1
相关资源
- 基于Matlab的最大熵模糊图像复原算法
- KITTI雷达点云与图像数据融合matlab源码
- 图像分割算法
- SAR图像去噪matlab小波去噪、contourlet变
- 基于HSI空间的图像分割算法
- 103a02c0a4ba21f55ad3637f8ea23da4.md
- matlab实现的小波变换彩色图像水印嵌
- 图像边缘检测
- INSAR图像处理
- 图像反卷积
- 等效视数
- 小波变换的压缩感知图像处理
- pcnn脉冲耦合神经网络的图像分割
- 图像的检测消失点
- 图像恢复:快速非局部均值滤波
- 图像去模糊和超分辨处理
- Max CCM1 数字图像相关法
- NGC ACM图像分割
- sfr 1.4 用于计算图像的频率响应
- 图割方法的图像分割
- image2data 曲线坐标提取
- BP Classification 基于matlab神经网络的遥
- matlab实现图像边缘检测、图像分割、
- CT平行束重建图像
- Ncc 图像配准
- 泊松图像融合算法
- 2D phase unwrapper
- CS Primary tutorial CS压缩传感的初级教学
- 夜间图像增强
- NLTV WI v1 非局部全变分小波域图像修复
评论
共有 条评论