MATLAB數字圖像處理提取顏色分量

clear;
close all;
clc;
img=imread('D:\pictures\lena1.jfif');%讀入原彩色圖像
imshow(img);%展現圖像
%對紅色分量提取
img_r=img(:,:,1);
img_r(:,:,2)=0;
img_r(:,:,3)=0;
figure,imshow(img_r);
%對綠色分量提取
img_g=img(:,:,2);
img_r(:,:,1)=0;
img_r(:,:,3)=0;
figure,imshow(img_g);
%對藍色分量提取
img_b=img(:,:,3);
img_r(:,:,2)=0;
img_r(:,:,1)=0;
figure,imshow(img_b);

提問:爲什麼只有取第一個維度運行出來是鮮明紅色,取其他維度就沒有鮮明的顏色?
解答:粗心問題,語句*img_g=img(:,:,2);
img_r(:,:,1)=0;
img_r(:,:,3)=0;*中的img_r應該改爲img_g

更改後的代碼:

clear;
close all;
clc;
img=imread('D:\pictures\lena1.jfif');%讀入原彩色圖像
imshow(img);%展現圖像
%對紅色分量提取
% img_r=img(:,:,1);%下面兩條語句是對此語句的改進
% img_r=uint8(zeros(512,512,3));%
% img_r(:,:,1)=img(:,:,1);%
img_r=img(:,:,1);
img_r(:,:,2)=0;
img_r(:,:,3)=0;
figure,imshow(img_r);
%對綠色分量提取
img_g=img(:,:,2);
img_g(:,:,1)=0;
img_g(:,:,3)=0;
figure,imshow(img_g);
%對藍色分量提取
img_b=img(:,:,3);
img_b(:,:,2)=0;
img_b(:,:,1)=0;
figure,imshow(img_b);

但是出現報錯:
錯誤使用 images.internal.imageDisplayValidateParams>validateCData (line 115)
多平面圖像的輸入項必須是大小爲 MxNx3 的 RGB 圖像。

出錯 images.internal.imageDisplayValidateParams (line 27)
common_args.CData = validateCData(common_args.CData,image_type);

出錯 images.internal.imageDisplayParseInputs (line 78)
common_args = images.internal.imageDisplayValidateParams(common_args);

出錯 imshow (line 222)
images.internal.imageDisplayParseInputs({‘Parent’,‘Border’,‘Reduce’},preparsed_varargin{:});

出錯 book32801 (line 38)
figure,imshow(img_b);


錯誤原因:* img_r=uint8(zeros(512,512,3));:原圖片是256256的,而語句寫的是512*512,導致下標匹配不起來

再次更改,正確代碼:

clear;
close all;
clc;
img=imread('D:\pictures\lena1.jfif');%讀入原彩色圖像
subplot(1,4,1),imshow(img);%展現圖像
%對紅色分量提取
% img_r=img(:,:,1);%下面兩條語句是對此語句的改進
img_r=uint8(zeros(256,256,3));%
img_r(:,:,1)=img(:,:,1);%
img_r(:,:,2)=0;
img_r(:,:,3)=0;
subplot(1,4,2),imshow(img_r);
%對綠色分量提取
%img_g=img(:,:,2);%同上
img_g=uint8(zeros(256,256,3));
img_g(:,:,2)=img(:,:,2);
img_g(:,:,1)=0;
img_g(:,:,3)=0;
subplot(1,4,3),imshow(img_g);
%對藍色分量提取
%img_b=img(:,:,3);%同上
img_b=uint8(zeros(256,256,3));
img_b(:,:,3)=img(:,:,3);
img_b(:,:,2)=0;
img_b(:,:,1)=0;
subplot(1,4,4),imshow(img_b);

運行結果:
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章