FPGA图像处理之 插值 边缘检测

目录

1 插值

1.1 传统图像插值

1.1.1 Pixel Replication(像素复制)

1.1.2 Bilinear Interpolation(双线性插值)

1.2 Bicubic插值

2 边缘检测

2.1 Roberts

2.2 Laplacian

2.3 Prewitt

2.4 Sobel

1 插值

1.1 传统图像插值

1.1.1 Pixel Replication(像素复制)

FPGA图像处理之 插值 边缘检测_第1张图片

虽然简单,但也是现在计算机里面桌面用的图像放大或者缩小,就是用的像素复制。它最简单,时效最快,不增加任何数据或者细节的东西。 若将一幅图像经这种方法放大后,图像经常会出现一些锯齿状。

1.1.2 Bilinear Interpolation(双线性插值)

FPGA图像处理之 插值 边缘检测_第2张图片

采用了相似三角形的性质,C点离A,B哪点近,哪点占的权重就高,通常是周围4个像素点插值1个像素点。因左图是阶跃的,从视觉上看是锐化的,经过插值就会变得模糊,锯齿状减少。

1.2 Bicubic插值

FPGA图像处理之 插值 边缘检测_第3张图片

MATLAB中用于图像放大或缩小的函数imresize中cubic选项就是用的这个方法。

FPGA图像处理之 插值 边缘检测_第4张图片

FPGA图像处理之 插值 边缘检测_第5张图片

 根据已知的条件和函数是连续的,可以得到7个方程,但有8个未知数。

FPGA图像处理之 插值 边缘检测_第6张图片

选择A2使得泰勒基数后面的展开项要差不多一致,选择A2等于-0.5。

所产生的效果要好于传统的方法。

2 边缘检测

2.1 Roberts

%% load image
Image2D = imread('2.jpg');
Image2D = rgb2gray(Image2D);
%Get size of Image
Height = size(Image2D,1);
Width = size(Image2D,2);
Length = Height * Width;
%2D to 1D 注意转置,将数据逐行读出
Image1D = reshape(Image2D',1,Length);
% To Workspace 注意格式,有排序
Image_in = [double(0:Length-1)' double(Image1D)'];
%延时
Latency = Width+Width+7;

%Roberts edge detection
Rob_x = [1 0;0 -1];
Rob_y = [0 -1;1 0];

runtime_set = Length+Latency;

%% show result
%1D to 2D
dealImage1D = Image_out;
dealImage2D = reshape(dealImage1D((1+Latency):(Latency+Length)),Width,Height);
dealImage2D = uint8(dealImage2D');
%show image
fig = figure;
clf;

set(fig,'name','fig show');
subplot(1,2,1);
image(Image2D);
axis equal;
axis off;
title('Input Image');
colormap(gray(256));

subplot(1,2,2);
image(dealImage2D);
axis equal;
axis off;
title('Output Image');
colormap(gray(256));

FPGA图像处理之 插值 边缘检测_第7张图片

 FPGA图像处理之 插值 边缘检测_第8张图片

阈值40

2.2 Laplacian

%Laplacian edge detection
Lap = [0 1 0;1 -4 1;0 1 0];

FPGA图像处理之 插值 边缘检测_第9张图片

 FPGA图像处理之 插值 边缘检测_第10张图片

阈值40

2.3 Prewitt

%Prewitt edge detection
Pre_x = [-1 -1 -1;0 0 0;1 1 1];
Pre_y = [-1 0 1;-1 0 1;-1 0 1];

FPGA图像处理之 插值 边缘检测_第11张图片

FPGA图像处理之 插值 边缘检测_第12张图片

阈值128

2.4 Sobel

%sobel_filter
sobel_x = [-1 0 1;-2 0 2;-1 0 1];
sobel_y = [1 2 1;0 0 0;-1 -2 -1];

FPGA图像处理之 插值 边缘检测_第13张图片

FPGA图像处理之 插值 边缘检测_第14张图片阈值128 

 

你可能感兴趣的:(matlab,图像处理,fpga开发)