在看matlab对图像的处理时,在看matlab对图像的处理时,img = 1-img(:,:,2)这个语句是什么意思?

2020-12-08 06:43:34 字数 4176 阅读 2939

1楼:匿名用户

img(:,:,2) 是取图像的绿色分量(rgb中的第2个);

1-img(:,:,2) 是取颜色的反色;

把上述赋值给img,则img成了二维数组,此时不再是真彩图,而是灰度图,最终的效果大约就类似于**底片那样。

matlab小白,急求img(:,1:2)是什么意思?

2楼:我不仅仅是笨

img(:,1:2)的意思是取矩阵(或者图像)img的第1列到第2列的所有数据。其中第一个“:”表示取列的所有数,表示取第1列到第2列。

假设img的数据如下:

12345234565467978999那么img(:,1:2)的得到的结果如下:

12

23

54

78

即取前两列的数据。matlab运行结果如图1所示:

图1 运行结果

再如,img(:,2:4),表取第2列到第4列的数据,得到结果如下:

2 3 4

3 4 5

4 6 7

8 9 9

同理,img(1:2,:)则表示,取第1行到第2行的数据,得到结果如下:

1 2 3 4 52 3 4 5 6可以好好体会一下,希望对你有所帮助。。。

matlab里 一副彩色图像 img=imread('j.jpg'); a=img(:,:,1); b=img(:,:,2); c=img(:,:,3);

3楼:不好好改就革

分别代表这幅图的rgb(红绿蓝)三个成分的值

img(:,:,1)是什么意思 matlab语言

4楼:天云一号

在matlab中,img(:, :, 1)表明img是一个三维矩阵,意思是说取img的第一个二维矩阵。

可以参考如下程序段进行理解:

img = ones(2, 4, 2); % 生成一个三维矩阵,三维矩阵中包含2个二维矩阵,每个二维矩阵都是2*4的矩阵

三维矩阵img的形式如下:

img(:, :, 1)=

1 1 1 1

1 1 1 1

img(:, :, 2)=

1 1 1 1

1 1 1 1

5楼:匿名用户

img(:,:,1)的意思是图像的第一通

道,假设图像是rgb三分量组成的图像,那么图像的第一通道就是r,第二通道是g,第三通道是b

img(:,:,1)就代表r通道,也就是红色分量图像;img(:,:,2)代表g通道,也就是绿色分量图像;img(:,:,3)代表b通道,也就是蓝色分量图像。

6楼:匿名用户

很明显img为一个三维矩阵或者读取后的图像数据,img(:,:,1)就是读取三维矩阵的第一“片”矩阵。

matlab图像处理中b(:,1))和b(:,2)),b=b{1}分别是什么意思?

7楼:匿名用户

b表示cell阵列b的第一个元素,cell阵列的每个元素都可以是一个任意阶矩阵

也就是说b是一个矩阵,具体可查阅cell用法说明b(:,1)和b(:,2)分别表示矩阵b的第一列所有元素和第二列所有元素

min(b(:,1))表示取矩阵b第一列所有元素中最小的一个

8楼:匿名用户

b(:,1))是b矩阵的第一列,b(:,2))是b矩阵的第二列。

b不知道什么意思。不过从boundaries函数的返回类型可以知道。boundaries函数得到二值图像中的区域边界,返回一个px1 cell 类型的数组,其中p 图像中的小孔的个数。

数组中每一个cell都包含一个 qx2 的矩阵,矩阵的每一列包含边界像素点的行列坐标。q表示每一个小孔的边界像素点的个数。

matlab中图像马赛克处理中的r=i(:,:,1);g=i(:,:,2);b=i(:,:,3);这三句是什么意思?详细点 谢谢

9楼:宝刀没开刃

图像一般是由rgb模型构成的,rgb模型有三个色彩通道,分别代表红绿蓝三原色。

这句话的意思就是把图像中红、绿、蓝三色的数据分别存储到矩阵r、

g和b中。

matlab图像处理中 x1 = rgb(:,:,1); 这行语句是什么意思?

10楼:酷呆爱死呆

提取三维数据的第一维数据。如果是图像的话就是提取彩色图像的红色分量。r=rgb(:,:,1)%%红色分量

g=rgb(:,:,2)%%绿色分量

b=rgb(:,:,3)%%蓝色分量

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

如果是三维数据的话:

x1=rgb(:,:,1)%%第一维数据

x2=rgb(:,:,2)%%第二维数据

x3=rgb(:,:,3)%%第三维数据

img(ii,:)=x(:); 在matlab 中是什么意思 求大神解释下列**

11楼:匿名用户

x现在是一个一维数组,img(ii,:)=x(:);这条**为:将x这个一维数组整体赋给img数组的第ii行。比如说x=[1,2,3,4,2]; img原本为4*5的矩阵

img=[ 0,0,0,0,0

0,0,0,0,0

0,0,0,0,0

0,0,0,0,0

];img(3,:)=x(:);

此时执行完上面这条语句后,img变为:

img=[ 0,0,0,0,0

0,0,0,0,0

1,2, 3,4,2

0,0,0,0,0];

在matlab中图像处理中如何理解 part = img(i:i+block_size-1, j:j+block_size-1);

12楼:匿名用户

这个问题与1543657615568846507重复。

这段**的作用是,根据字符串 content 的内容,把图像 img 按照每 8x8 个像素中取一个像素,将其后3位取反。

从**大致判断以下信息:

1、m、n分别为图像的高和宽;

2、a_random 和 b_random 分别为两个随机整数,取值范围 1~block_size^2;

3、content 为由字符 0和1 组成的字符串。

**中简单加一些注释,有问题再追问:

content_length=length(content);

count=0;

block_size=8;

fori=1:block_size:m

forj=1:block_size:n

count=count+1;

ifcount>content_length

break;

endbit=str2double(content(count));

%根据当前content字符是0或1决定像素的位置

random_pixel_idx=(bit==1)*a_random+(bit==0)*b_random;

%从图像中提取一个8x8的子块,并根据前一步的位置将像素后3位取反

part=img(i:i+block_size-1,j:j+block_size-1);

part(random_pixel_idx)=bitxor(part(random_pixel_idx),7);%后3位取反

%把处理过的图像数据写回原矩阵img

img(i:i+block_size-1,j:j+block_size-1)=part;

end%由于break只能退出最近的一层循环,这里需要另外退出一次

ifcount>content_length

break;

endend