MATLAB/FPGA图像学习-rgb转灰度
之前学FPGA 先要要应用在图像方面,在网上也找了很多资料,matlab算是资源最多了的,博主本着学习的目的,将每天所学的写成笔记,方便以后的复习,同时也可以让刚学习的小伙伴参考一下。如果大神们能看到,也希望能够指导下。博主对自己的方向还很迷茫。十分乐意能与大家相互交流学习。
rgb转灰度
Gray = R0.299 + G0.587 + B*0.114
clc;
clear all;
close all;
rgb_data=imread('juncao.jpg');
imshow(rgb_data);
r_data=rgb_data(:,:,1);
g_data=rgb_data(:,:,2);
b_data=rgb_data(:,:,3);
[row,col,dim]=size(rgb_data);
gray_data=zeros(row,col,dim);%gray_data=rgb_data;
y_gray=zeros(row,col);
cb_gray=zeros(row,col);
cr_gray=zeros(row,col);
for r=1:row
for c=1:col
y_gray(r,c)=r_data(r,c)*0.299+g_data(r,c)*0.587+b_data(r,c)*0.114;
end
end
gray_data(:,:,1)=y_gray;
gray_data(:,:,2)=y_gray;
gray_data(:,:,3)=y_gray;%灰度值
gr=uint8(gray_data);
figure;
imshow(gr);
刚开始取灰度的时候 出了一个错误 ,matlab只显示了原图 ,灰度图只有有限个黑点的白色图片,后来问了大佬后 ,才发现在 %灰度值 这一步有问题。本来gray_data是unit型的数据,但在经过灰度值赋值后变成了double型。数据类型的变换导致了图片只有有限个黑点(具体可以查看相关资料),解决办法就是把double型数据变成uint8。
zeros生成0矩阵;zeros(x,y)(与ones效果相同)
figure保存前一张图片
附上显示的原图与灰度图
出错的:
改正后的: