2015-01-05 5 views
0

DWT 스테 가노 그래피에 대한 더 많은 연구를 해왔습니다. 아래의 코드를 웹에서 보았습니다. 이것은 서브 밴드 계수가 지정되는 것을 처음 접했습니다. 나는 코드가하는 일을 생각하지만 누군가 그것을 검증하길 바란다!스테 가노 그래피를 사용하여 데이터를 DWT 서브 밴드 계수에 임베드

steg_coeffs = [4, 4.75, 5.5, 6.25, 7]; 

for jj=1:size(message,2)+1 
    if jj > size(message,2) 
     charbits = [0,0,0,0,0,0,0,0]; 
    else 
     charbits = dec2bin(message(jj),8)'; 
     charbits = charbits(:)'-'0'; 
    end 

    for ii=1:8 
     bit_count = bit_count + 1; 

     if charbits(ii) == 1 
      if HH(bit_count) <= 0 
       HH(bit_count) = steg_coeffs(randi(numel(steg_coeffs))); 
      end 
     else 
      if HH(bit_count) >= 0 
       HH(bit_count) = -1 * steg_coeffs(randi(numel(steg_coeffs))); 
      end 
     end 
    end 

는 I는 steg_coeffs 비트가 이들 선택된 계수에 임베드 될 HH 서브 밴드의 coeffiecnt 선택된 생각한다. 나는 randi를 봤는데, 반복의 각 반복마다 이러한 지정된 coeffs를 무작위로 선택하고 무작위 선택 coeffs에 포함한다고 믿습니다. 나는 정확 한가 ?? 감사합니다

답변

0

help randi을 입력하면 randi(IMAX)은 1 : IMAX 범위의 균일하게 분포 된 정수가되는 스칼라를 반환한다는 것을 알게됩니다. 간단히 말하면 1과 IMAX 사이의 임의의 정수를 선택합니다.

numel(matrix)은 행렬의 총 요소 수를 반환합니다.

그래서, steg_coeffs(randi(numel(steg_coeffs))) 1 및 제

임베딩 알고리즘은 다음 블록으로 구현 사이의 임의의 인덱스를 선택하여, steg_coeffs에서 랜덤 요소를 선택한다. 당신이 일을 삽입하는 경우

if charbits(ii) == 1 
    ... 
else 
    ... 
end 

기본적으로는 HH 계수는 양수 여야합니다. 그렇지 않은 경우 steg_coeffs에서 하나를 사용하십시오. 마찬가지로 0을 포함하는 경우 HH 계수는 음수 여야합니다. 그렇지 않은 경우 steg_coeffs의 음수로 대체하십시오.

아이디어는 비밀을 추출 할 때 확인해야 할 모든 비트가 1

+0

0 당신에게 Reti43 감사해야하는지 여부를 알고는 HH 계수는 양 또는 음인지 것입니다. 항상 아주 명확한 설명 : – Hitmanpaddy

+0

안녕 Reti43. "1과 5 사이의 임의의 색인을 선택하여"라고 말하면 궁금한 점은 steg_coeffs = [4, 4.75, 5.5, 6.25, 7] 중 누구라도 될 수 있다는 것입니다. 또는 그것이 1,2,3,4,5 일 수 있음을 의미합니까? 배열에서 무작위 int 즉, 4.75, 6.25 등이되어야한다고 생각하지만 이중 체크 만하고 싶습니다! 감사합니다 – Hitmanpaddy

+0

임의의 인덱스는 1과 5 사이에 있습니다. 그런 다음 steg_coeffs의 특정 요소에 액세스하는 데 사용합니다. steg_coeffs (1) = 4, steg_coeffs (2) = 4.75 등입니다. 따라서 1과 5 사이의 임의의 숫자를 선택하면 4, 4.75, 5.5, 6.25 및 7 중에서 무작위 요소를 효과적으로 선택하게됩니다. – Reti43