2015-01-28 2 views
0

DWT steganograpy를 사용하여 숨겨진 숨겨진 데이터를 추출하려고합니다. 압축을 적용해도 아무 일도 일어나지 않습니다! 다음 코드를 사용하여 .bmp 이미지를 압축했지만 압축을 적용한 후에 숨겨진 메시지를 추출하지 않습니다. 디버거에서 실행을 시도하고 단지 한 번만 주위를 반복 한 후 코드 끝으로 점프 것으로 보인다. 문제의 아이디어. 압축을 적용하기 전에 데이터를 추출 중입니다.압축 후 캔트 추출물 stego 메시지가 이미지에 적용됩니까?

%%%%%%%%%%%%%%%%%%DECODING%%%%%%%%%%%%%%%%%%%%%%% 
%clear; 
filename='newStego.bmp'; 
stego_image=imread(filename); 
compression=90; 
file_compressed=sprintf('compression_%d_percent.jpg',compression); 
imwrite(imread(filename),file_compressed,'Quality',compression); 
new_Stego = double(imread (file_compressed)); 
[LL,LH,HL,HH] = dwt2(new_Stego,'haar'); 

message = ''; 
msgbits = ''; 
for ii = 1:size(HH,1)*size(HH,2) 
    if HH(ii) > 0 
     msgbits = strcat (msgbits, '1'); 
    elseif HH(ii) < 0 
     msgbits = strcat (msgbits, '0'); 
    else 
     return; 
    end 

    if mod(ii,8) == 0 
     msgChar = bin2dec(msgbits); 
     if msgChar == 0 
      break; 
     end 
     msgChar = char (msgChar); 
     message = [message msgChar]; 
     msgbits = ''; 


     disp(message); 

    end 


end 

답변

0

압축 스키마가 손실됩니다. 즉, 데이터 압축시 돌이킬 수없는 정보가 손실됩니다.

특히 jpeg 압축은 픽셀 데이터를 주파수 도메인으로 변환하고 많은 고주파 성분을 제로로 만듭니다. DWT 세부 계수 (LH, HL 및 HH)는 주파수 계수와 일부 유사하므로이 압축 (HH 계수가 훨씬 더 크게 적용됨)의 영향을 크게받습니다. 100 % 고화질 JPEG 압축도 손실은 있지만 왜곡은 자연히 최소화된다는 점에 유의하십시오.

데이터를 여전히 압축하려면 정보를 포함하는 방식을 파괴하지 않는 방식으로 데이터를 압축해야합니다. 다음 두 가지 옵션이 있습니다.

  • 무손실 압축 방식을 사용하십시오. PNG 또는 우편.
  • jpeg 압축에 강력한 스테 가노 그래피 알고리즘을 사용하십시오. 추가

: 당신의 디코딩 프로세스는 한 번 주위 루프 처음 몇 HH 계수 중 하나가 조기 종료의 결과로, 0이기 때문입니다 이유. 어느 쪽이든, 또는 처음 8 개의 계수는 음수입니다. 결과는 메시지 조건의 끝인 0 문자로 추출됩니다.

+0

감사합니다. 매우 도움이됩니다. – Hitmanpaddy