문제

MPEG-1 압축에서 기본적인 문제가 있습니다. 이미지 내에서 거대 블록을 생성해야합니다. 매크로 블록은 16 x 16 픽셀로 구성됩니다. 여기서 4 x 8x8은 휘도, 1 x 8x8은 CB 및 1 x 8x8 cr입니다. Matlab에서 나는 이것을 포함하는 셀 매트릭스를 생성하고 싶습니다. 제안이 있습니까?

도움이 되었습니까?

해결책

다양한 수집하는 가장 좋은 방법을 알아 내려고하는 것 같습니다. 8-8 단일 변수로 매트릭스. 이 작업을 수행 할 수있는 몇 가지 방법이 있습니다 (첫 번째 옵션은 내가 귀하의 케이스를 위해 선택할 것입니다).

  • 데이터를 3 차원 매트릭스로 연결합니다.

    당신은 사용할 수 있습니다 고양이 주어진 치수를 따라 같은 크기의 매트릭스를 스택하는 것. 예를 들어, 4가있는 경우 8-8 변수의 휘도 행렬 L1, L2, L3, 그리고 L4, 다음은 그것들을 an에 연결할 것입니다 8-8- x 4 행렬:

    luminance = cat(3,L1,L2,L3,L4);
    

    추가를 추가 할 수도 있습니다 Cb 그리고 Cr 생성을위한 행렬 8 x 8- x 6 행렬:

    macroBlock = cat(3,L1,L2,L3,L4,Cb,Cr);
    %# OR...
    macroBlock = cat(3,luminance,Cb,Cr);  %# Using luminance variable from above
    

    그런 다음 색인 할 수 있습니다 macroBlock 다음과 같은 방법으로 무엇이든 접근 할 수 있습니다 8-8 필요한 행렬 :

    L2 = macroBlock(:,:,2);  %# Get the second luminance matrix
    Cb = macroBlock(:,:,5);  %# Get the Cb matrix
    
  • 셀 어레이에 데이터 저장 :

    모든 행렬은 크기가 같기 때문에 위의 연결 옵션이 가장 좋습니다. 그러나 또 다른 옵션 (다양한 크기, 유형 또는 차원의 데이터를 저장하려는 경우 특히 유용함)은 사용하는 것입니다. 셀 어레이. 다음은 a 1-6 상기 행렬을 포함하는 셀 어레이 :

    macroBlock = {L1 L2 L3 L4 Cb Cr};
    

    그런 다음 색인 할 수 있습니다 macroBlock 다음과 같은 방법으로 무엇이든 접근 할 수 있습니다 8-8 필요한 행렬 :

    L2 = macroBlock{2};  %# Get the second luminance matrix
    Cb = macroBlock{5};  %# Get the Cb matrix
    
  • 구조로 데이터 저장 :

    또 다른 옵션은 a를 사용하는 것입니다 구조 당신의 저장 8-8 매트릭스. 구조는 데이터에 액세스 할 수있는 이점이 있습니다. 필드 이름으로 인덱스 값을 기억하는 것과는 반대로. 구조를 초기화하는 방법은 다음과 같습니다.

    macroBlock = struct('L1',L1,'L2',L2,'L3',L3,'L4',L4,'Cb',Cb,'Cr',Cr);
    %# OR...
    macroBlock = struct();
    macroBlock.L1 = L1;
    macroBlock.L2 = L2;
    macroBlock.L3 = L3;
    macroBlock.L4 = L4;
    macroBlock.Cb = Cb;
    macroBlock.Cr = Cr;
    

    위의 두 구문은 필드 이름을 가진 구조를 만듭니다. 'L1', 'L2', 'L3', 'L4', 'Cb', 그리고 'Cr'. 그런 다음 색인 할 수 있습니다 macroBlock 다음과 같은 방법으로 무엇이든 접근 할 수 있습니다 8-8 필요한 행렬 :

    L2 = macroBlock.L2;  %# Get the second luminance matrix
    Cb = macroBlock.Cb;  %# Get the Cb matrix
    

다른 팁

나는 당신이 필요한 것을 얻지 못했습니다. 이미지를 해당 블록에 분할하는 코드?

당신이 만들어야 할 것은 매트릭스 I (i, j, m, n)입니다. 여기서 m, n은 이미지의 n 's and m'st 8x8 블록을 의미하고 i, j는 블록 내의 특정 픽셀을 나타냅니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top