matlab实现不同方向颜色更改

来源:互联网 发布:阿里云os2 root 编辑:程序博客网 时间:2024/04/29 15:51

本文主要实现了下图:各个方向线段的颜色设置

     1.原图如下:

                          

     2.处理的效果如下所示:


    各位jpg格式颜色显示不是特别好

3.处理步骤

   1.读入图像,把原图转换为灰度图像

   2.定义方向滤波的模板,把图像中各个方向的图像滤除出来。

   3.将滤除的图像进行二值化,并且取反。因为在二值图像中1代表白色,二在灰度图像中白色代表255.

   4.为各个方向的线段定义颜色,并对提取出来的图像进行染色。

   5.将各部分的分量加起来显示。

4.matlab源代码

%% clear the current momery and close all the window but mainclear all;close all;clc; %clear the instruction distrit%% read the picture and convert to the gray modeimg = imread('ban2-Models.jpg');img_gray =rgb2gray(img);figure(1);imshow(img_gray);%% covert the current dimension to the frequentimg_frq = fftshift(fft2(img_gray));img_frq_abs =  abs(img_frq);%% model to fiter the directional imagemodel_fiter_1 = [1,0,0;0,1,0;0,0,1]; %西偏北方向45°滤波模板model_fiter_2 = rot90(model_fiter_1);%东偏北方向45°滤波模板model_fiter_3 = [0,1,0;0,1,0;0,1,0]; %南北方向滤波模板model_fiter_4 = rot90(model_fiter_3);%东西方向滤波模板image_fiter_1 = ~im2bw(uint8(conv2(img_gray,model_fiter_1)));image_fiter_2 = ~im2bw(uint8(conv2(img_gray,model_fiter_2)));image_fiter_3 = ~im2bw(uint8(conv2(img_gray,model_fiter_3)));image_fiter_4 = ~im2bw(uint8(conv2(img_gray,model_fiter_4)));%% 定义颜色fill_red(:,:,1) = ones(size(image_fiter_1))*255;fill_red(:,:,2) = ones(size(image_fiter_1))*0;fill_red(:,:,3) = ones(size(image_fiter_1))*0;  %红色fill_blue(:,:,1) = ones(size(image_fiter_1))*0;fill_blue(:,:,2) = ones(size(image_fiter_1))*0;fill_blue(:,:,3) = ones(size(image_fiter_1))*255;  %蓝色fill_green(:,:,1) = ones(size(image_fiter_1))*0;fill_green(:,:,2) = ones(size(image_fiter_1))*255;fill_green(:,:,3) = ones(size(image_fiter_1))*0;  %绿色fill_white(:,:,1) = ones(size(image_fiter_1))*255;fill_white(:,:,2) = ones(size(image_fiter_1))*255;fill_white(:,:,3) = ones(size(image_fiter_1))*255;  %白色%% 给每个部分上色for i=1:3    image_fill_1(:,:,i) =  image_fiter_1.*fill_red(:,:,i);    image_fill_2(:,:,i) =  image_fiter_2.*fill_green(:,:,i);    image_fill_3(:,:,i) =  image_fiter_3.*fill_blue(:,:,i);    image_fill_4(:,:,i) =  image_fiter_4.*fill_white(:,:,i);end%% 输入最终的图像image_color = image_fill_1+image_fill_2+image_fill_3+image_fill_4;figure(2);imshow(image_color);

5以上为时域方向滤波的形式,下面讲一下有关该图像在频率的滤波

下图为原始图像的频谱图:有关频谱的计算方法主要分为两部分

1.对原始图像进行傅里叶变换

2.对傅里叶变换的结果取其绝对值(幅值),然后在进行归一化操作

           从改图可以看出该图像的频率主要集中在四个方向,所以想到可以再四个方向添加频域滤波器进行滤波

原创粉丝点击